Git Paid, the programmer’s time tracker
As part of an effort to learn hands-on about DevStructure’s potential customers, I’ve started working with small companies helping with their Puppet infrastructure and general operational polish. It became quickly clear to me that tracking my time in TextMate was a losing proposition so I took a late evening to whip up Git Paid.
Git Paid includes three programs. gpbegin
(1) and gpend
(1) mark the beginning and end of a work session by making commits to a Git repository. By default, this repository is ~/.gitpaid
but it can be overridden by the GITPAID_REPO
environment variable or the -r
option. Likewise the default branch is master
but it can be overridden by the GITPAID_BRANCH
environment variable or the -b
option.
gpinvoice
(1) tabulates the time spent in all work sessions and generates a nice work summary, which includes all the commit messages given to gpbegin
(1) and gpend
(1) with the -m
option. It respects that not all hours are billable so the -t
option to gpend
(1) will cause gpinvoice
(1) to count an arbitrary amount of time for that session. For example:
$ gpbegin -b client-name $ ... $ gpend -b client-name -m "Shaved the yak." $ gpbegin -b client-name $ gpend -b client-name -t 1:45 -m "Faked the time." $ gpinvoice -b client-name # Invoice Thu Jan 6 18:27:32 UTC 2011 from client-name branch of /home/vagrant/.gitpaid ## Work log Began: Thu, 6 Jan 2011 16:17:29 +0000 > Shaved the yak. Ended: Thu, 6 Jan 2011 17:47:42 +0000 Billed time: 1:30 Began: Thu, 6 Jan 2011 18:27:23 +0000 > Faked the time. Ended: Thu, 6 Jan 2011 18:27:25 +0000 Billed time (adjusted): 1:45 ## Summary Total billed time: 3:15