【发布时间】:2011-06-08 20:41:04
【问题描述】:
希望量化每个变更集中发生了多少变化。有什么快速的方法可以列出两个修订版之间的 kb 差异吗?
【问题讨论】:
希望量化每个变更集中发生了多少变化。有什么快速的方法可以列出两个修订版之间的 kb 差异吗?
【问题讨论】:
我昨天和@shambulator 有同样的想法!因此,我添加了打印delta size in bytes 的功能,作为somewhat long and clean patch.py 实用程序的--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
UPD:感谢@Gili 和@mforbes,现在有一张 Mercurial 的票
https://bz.mercurial-scm.org/show_bug.cgi?id=4245
【讨论】:
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(-)
【讨论】:
也许可以使用hg bundle 来检查大小? (我没有检查这与总存储库大小的一致性。)
function revsize() {
hg bundle -r $1 --base "p1($1)+p2($1)" /dev/stdout | wc -c
}
工作原理
在为修订版REV = $1(bash 函数的第一个参数)和its parents"p1(REV)+p2(REV)"(可能有两个,如果是一个合并。)通过将/dev/stdout 用作文件,结果被发送到标准输出,在那里它可以通过管道传送到wc -c,而无需在磁盘上创建文件。
【讨论】:
-t none 可能是最好的,但这都需要一些测试(或权威来源)。
我昨天也有同样的想法!我写了a quick and dirty Python script 来确定给定标准输入上的统一差异或命令行上的文件的总文件大小变化。要为变更集执行此操作,您可以:
hg diff -c <cset id> | patchsize.py
从某种意义上说,它可能不考虑特定于平台的行结尾,并且它不会特别巧妙地解析差异,因此快速而肮脏。但它对于我的目的来说已经足够接近了。
【讨论】: