Is there a way to obtain the number of changed lines of code over a certain time period in a mercurial repository? Something along the lines of what statsvn does would be great, but anything counting the number of changed lines of code within 6 months will do (including a clever combination of arguments to hg log).
The hg churn extension is what you want.
You can get visual results with hg activity or hg chart.
Edit: hg diff
and hg log
both support a --stat
option that can do this for you, only better and quicker.
I made an alias called lines
to count changed lines (not necessarily lines of code) for me. Try putting this alias in your .hgrc file:
[alias] lines = !echo `hg log -pr $@ | grep "^+" | wc -l` Additions; echo `hg log -pr $@ | grep "^-" | wc -l` Deletions;
Then pass it the revision first, followed by any optional arguments:
hg lines tip
or hg lines 123:456 -u brian
Sometimes you want to know the number of lines changed excluding whitespace-only changes. This requires using diff -w
underneath instead of log -p
. I set up a linesw
alias for this:
#ignore whitespace linesw = ![[ $1 =~ : ]] && r=$1 || r="$1~1:$1"; echo `hg diff -wr $r | grep "^+\([^+]\|$\)" | wc -l` Additions; echo `hg diff -wr $r | grep "^-\([^-]\|$\)" | wc -l` Deletions;
hg linesw tip
or hg lines 123:456
Note they behave slightly differently because diff
and log
behave differently -- for example, log
will take a --user
parameter while diff
will not, and when passing a range, log
will show changes commited in the first revision given in the range, while diff
will not.
This has only been tested using bash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With