列出mercurial变更集的大小?

时间:2011-06-08 20:41:04

标签: mercurial changeset

想要量化每个变更集中发生了多少变化。列出两个修订版之间的kb diff的快速方法是什么?

4 个答案:

答案 0 :(得分:3)

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(-)

答案 1 :(得分:3)

我和昨天的@shambulator有同样的想法!所以我添加了从delta size in bytes实用程序输出--diffstat作为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 输出的一部分来打印somewhat long and clean patch.py的功能。

{{1}}

UPD :感谢@Gili和@mforbes现在有一张Mercurial的票   https://bz.mercurial-scm.org/show_bug.cgi?id=4245

答案 2 :(得分:2)

也许可以使用hg bundle来检查尺寸? (我没有检查这与存储库总大小的一致性。)

function revsize() {
  hg bundle -r $1 --base "p1($1)+p2($1)" /dev/stdout | wc -c
}

工作原理

在为版本REV = $1(bash函数的第一个参数)和wc -c {{1}之间的更改生成包之后,使用its parents计算大小(以字节为单位) (如果是合并,则可能有两个。)通过使用"p1(REV)+p2(REV)"作为文件,结果将发送到标准输出,可以将其传送到/dev/stdout,而无需在磁盘上创建文件。 / p>

答案 3 :(得分:1)

我昨天才有同样的想法!我写了a quick and dirty Python script来确定文件大小的总变化,给定stdin上的统一差异或命令行上的文件。要为变更集执行此操作,您可以:

hg diff -c <cset id> | patchsize.py

快速而肮脏的意义在于它可能没有考虑平台特定的行结尾,并且它不能特别巧妙地解析差异。但它足够接近我的目的。