Лог git в календаре

5 views
Skip to first unread message

Dmitry Chestnykh

unread,
Aug 4, 2008, 6:47:35 PM8/4/08
to sellm...@googlegroups.com
Всем привет,

Я тут захотел узнать, когда я работаю (программирую), а когда нет. Лучший
способ -- посмотреть логи коммитов в git. Написал тупой скрипт для
экспорта лога в формат iCalendar (его понимают iCal, Outlook, Google
Calendar и другие). Решил поделиться, вдруг кому-то понадобится.

Вот пример работы (в iCal), лог Memoires за июль:

http://i36.tinypic.com/hrztop.png

(не подумайте, что я халявлю -- тут не отображен лог секретного проекта.
В июле я очень много программировал. Зато весь апрель оказался пустым :)

Использовать скрипт надо так: зайти в рабочую папку с
репозиторием git, и набрать, например:

log2calendar.rb > ~/Desktop/myproject.ics

После этого можете открывать myproject.ics в вашей любимой
программке-календаре.

(не забудьте chmod +x log2calendar.rb или запускайте вот так:
ruby log2calendar.rb
Файл, естественно, должен быть в PATH, или указывайте полный путь.)

Скрипт:
============= log2calendar.rb ===========<<<< отрежте меня <=====

#!/usr/bin/env ruby
#
# Git log to iCalendar
#
# Written by Dmitry Chestnykh, 5 Aug 2008
# Public domain
#
# Usage:
#
# cd git-repo
# log2icalendar.rb > outfile.ics
#

require 'date'

puts "BEGIN:VCALENDAR"
puts "VERSION:2.0"
puts "PRODID:-//hacksw/handcal//NONSGML v1.0//EN"
event_started = false
IO.popen("git log","r").each do |line|
if line =~ /Date:/
date_str = line.scan(/Date:(.*)/)[0][0]
date = DateTime.parse(date_str, '%a %-d %b %Y %T %z')
# print event
puts "\nEND:VEVENT" if event_started
event_started = true
puts "BEGIN:VEVENT"
puts "DTSTART:" + date.strftime("%Y%m%dT%H%M%S")
puts "DTEND:" + date.strftime("%Y%m%dT%H%M%S")
print "SUMMARY:"
elsif line =~ /[ ]{4}/ # commit message after 4 spaces
print line.strip.gsub(/([;,\\\\])/, '\\\\\\1')
end
end
puts "\nEND:VEVENT"
puts "END:VCALENDAR"
=================================<<<< откусите меня <<========

(Наверное кто-то уже что-то такое писал... Или может быть там есть что-то
такое встроенное? В любом случае, скрипт тупой, написан за 10 минут (5 из
которых ушли на чтение спецификации формата, остальное время - на
вспоминание ruby и regex), и не использует классную штуку git log
--pretty=format:форматтт. Зато работает :)

- Dmitry Chestnykh

rouslan valiulin

unread,
Aug 5, 2008, 12:52:36 PM8/5/08
to sellm...@googlegroups.com
> (Наверное кто-то уже что-то такое
> писал... Или может быть там есть что-то
> такое встроенное? В любом случае,
> скрипт тупой, написан за 10 минут (5 из
> которых ушли на чтение спецификации
> формата, остальное время - на
> вспоминание ruby и regex), и не использует
> классную штуку git log
> --pretty=format:форматтт. Зато работает :)

В продолжение темы:

Есть такой замечательный сервис, называетс
я LiveTimer (https://www.livetimer.com).

Отсчитывает затраченное время,
выводит отчеты, все дела.

Начал использовать его недавно, но
понравилась идея. Интегрируется с Fluid,
показывает в бэдже кол-во потраченных
минут.

http://www.picamatic.com/view/757664_Picture_475/

Mironov Anton

unread,
Sep 8, 2008, 2:08:38 PM9/8/08
to sellme-dev
Вот еще есть отличный сервис: http://www.rescuetime.com/

On Aug 5, 10:52 pm, rouslan valiulin <rouslan.valiu...@gmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages