Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GIT - Determining # lines of code written per hour (committed & uncommitted)

Tags:

git

I want to graph the # of new lines of code written each hour over the course of the day.

I'm aware of git diff, git log and they are very powerful for determining total # of lines committed to a branch. The --since="7am" option is really great as well.

Some of the git commands I'm utilizing are:

Total # of lines

git log --numstat --pretty="%H" master | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'

# lines additional in devel branch compared to master

git log --numstat --pretty="%H" master..devel | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'

# lines since a time of day

git log --since="7am" --format=format: --numstat | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("%d, -%d\n", plus, minus)}'

# lines currently uncommitted

git diff --stat | tail -1 | awk '{print $4}'

I've been struggling though with coming up with a way to track the # of new lines written in the past hour including uncommitted changes, across all branches in the current repo.

This may be more of a math problem.

The Question:

  • How can I determine the exact amount of lines written in the past hour across all branches, including uncommitted changes.

Gotchas/Scenarios:

  • +200 uncommitted at 7pm is 200 new lines written. +250 uncommitted at 8pm is only 50 new lines written the past hour.
  • +200 uncommitted at 7pm is 200 new lines written. At 8pm we commit 100 of the lines and then write 50 more new lines. Now +150 show as uncommitted, but we would need to determine that only 50 new lines were written in the past hour. Reconciling committed and uncommitted stats.
  • +200 uncommitted at 7pm. At 7:30pm we write 500 additional new lines and commit them. At 8pm we write 100 more new lines thus showing +300 as uncommitted. We should end up with 600 new lines written in the last hour.
like image 999
Nick Carson Avatar asked Nov 04 '13 19:11

Nick Carson


1 Answers

There's a tool gitstats that can give you Lines of Code by date. Maybe you can tweak a little the code (is written in python) to let him generate hourly stats.

like image 173
Atropo Avatar answered Sep 23 '22 12:09

Atropo