希望量化每个变更集中发生了多少变化。任何快速列出两个版本之间的kb差异的方法?
hg log --stat
是你追求的命令。看这个例子:
$ hg log --stat
changeset: 12431:56e146c7beef
user: flast
date: Wed Jun 08 16:12:54 2011 +1000
summary: Fix the frobulate to frob the knob correctly on tuesdays.
path/to/src/frob/interface.py | 29 ++++++++++++++++++++---------
path/to/tests/systest_frob.py | 14 ++++++++++++++
2 files changed, 34 insertions(+), 9 deletions(-)
我和昨天的@shambulator有同样的想法!所以我添加了从delta size in bytes实用程序打印--diffstat
作为somewhat long and clean patch.py输出的一部分的能力。
wget https://raw.githubusercontent.com/techtonik/python-patch/master/patch.py
hg diff -c tip | python patch.py --diffstat --
codereview/views.py | 28 ++++++++++++++++++++++++++++
index.yaml | 10 ++++++++++
2 files changed, 38 insertions(+), 0 deletions(-), +1267 bytes
UPD:感谢@Gili和@mforbes现在有一张Mercurial的门票 https://bz.mercurial-scm.org/show_bug.cgi?id=4245
也许可以使用hg bundle
来检查尺寸? (我没有检查这与存储库总大小的一致性。)
function revsize() {
hg bundle -r $1 --base "p1($1)+p2($1)" /dev/stdout | wc -c
}
这个怎么运作
在为修订版wc -c
(bash函数的第一个参数)和REV = $1
its parents(如果它是合并可能有两个)之间的更改生成一个包后,使用"p1(REV)+p2(REV)"
计算大小(以字节为单位)。通过使用/dev/stdout
作为文件,结果被发送到标准输出,它可以通过管道传输到wc -c
而无需在磁盘上创建文件。
我昨天才有同样的想法!我写了a quick and dirty Python script来确定文件大小的总变化,给定stdin上的统一差异或命令行上的文件。要为变更集执行此操作,您可以:
hg diff -c <cset id> | patchsize.py
从某种意义上讲,它可能不会考虑特定于平台的行结尾,而且它并不能特别巧妙地解析差异。但它足够接近我的目的。