Mercurial和Git的变更集总数

q5lcpyga  于 2022-12-10  发布在  Git
关注(0)|答案(6)|浏览(112)

是否可以通过一个简单的带参数的命令行来计算Mercurial/Git变更集(提交)的数量?

olhwl3o2

olhwl3o21#

对于Mercurial,只需检查“tip”的数字版本ID(定义为最高编号的版本):

$ hg id --num --rev tip
97
yeotifhr

yeotifhr2#

我想看看Mercurial附带的churn extension,它可以让你计算每个开发人员或每个时间段的变更集数量,看起来像这样:

$ hg churn -s -c -f "%Y-%m"
2005-05    208 *****************************                                    
2005-06    341 ***********************************************
2005-07    271 *************************************
...

如果您只想知道与给定修订集匹配的变更集的数量,那么就像其他人建议的那样使用hg logwc

$ hg log -r "user(geisler) and date('>2010')" --template x | wc -c
735
w7t8yxp5

w7t8yxp53#

对于git

git log --pretty=oneline | wc -l

将给予您提供当前分支上返回到原始提交的所有提交的计数。
要获取所有分支上的所有提交的计数,请执行以下操作:

git log --pretty=oneline --all | wc -l
webghufk

webghufk4#

下面是我的快速解决方案:

hg log | grep changeset | wc -l

(Of当然,这只有在没有人在他们的提交消息中写入变更集时才起作用,等等)
说明:
hg log会以下列格式传回信息:

changeset:   232351:06d3053eg093
branch:      default/XXXXXX
bookmark:    hg
tag:         tip
user:        User
date:        Thu Feb 20 10:22:30 2020 +0100
summary:     XXXXXX: cleanup in test

只抓一条线,然后数一数,就可以算出数。

r9f1avp5

r9f1avp55#

是的,这个问题确实很老了,但这里有一个更git原生的方法来获取git的提交次数。我目前使用的是git 2.15,但我不知道它已经存在多久了。

git rev-list --all --count

对于所有分支的总计,或

git rev-list HEAD --count

HEAD(或任何其他变更集)的祖系。

aiazj4mn

aiazj4mn6#

我使用下面的scriptlet来计算一个特定版本的hg祖先的数量:

hg log -r 'ancestors(.)' --template '1' \
 | wc --bytes

https://hg.pushbx.org/ecm/ldebug/rev/8b6e8611982a中添加以下消息:
mak.sh:在修订ID字符串中包括祖先数量
这个数字对于一个给定的变更集来说是固定的,无论它去哪里,也允许比较两个数字,假设它们在同一个分支上,彼此来判断哪个是“后来的”或更高级的,可以这么说。
尽管这个命令来自https://hg.pushbx.org/ecm/ldebug/rev/6cbc8bdbb764
这计算了历史记录中所有祖先变更集的数量,包括列出的变更集。(在本例中,点.代表当前工作目录的父目录,但是您可以使用其他修订说明。)这意味着,与数字本地修订ID不同,在同一个存储库中可能存在其他分支并不重要。

相关问题