Spl*_*plo 718 git revision build-process
我想得到我的Git存储库的提交数量,有点像SVN版本号.
目标是将其用作唯一的递增构建号.
我目前在Unix/Cygwin/msysGit上喜欢这样:
git log --pretty=format:'' | wc -l
Run Code Online (Sandbox Code Playgroud)
但我觉得这有点像黑客.
有没有更好的方法呢?如果我真的不需要wc
甚至是Git 会很酷,所以它可以在裸Windows上工作.只需读取文件或目录结构......
Ben*_*kin 1085
获取修订的提交计数(HEAD
,master
提交哈希):
git rev-list --count <revision>
Run Code Online (Sandbox Code Playgroud)
要获取所有分支的提交计数:
git rev-list --all --count
Run Code Online (Sandbox Code Playgroud)
我建议不要将它用于构建标识符,但如果必须,最好使用你正在构建的分支的计数.这样,相同的修订版将始终具有相同的编号.如果对所有分支使用计数,则其他分支上的活动可能会更改该数字.
Ray*_*yne 149
git shortlog
是一种方式.
Jak*_*ger 106
git rev-list HEAD --count
git rev-list <commit>
:通过跟随给定提交的父链接(在本例中为HEAD)可以访问的列表提交.
--count
:打印一个数字,说明将列出多少次提交,并禁止所有其他输出.
Ale*_*tau 87
此命令返回由提交者分组的提交计数:
git shortlog -s
Run Code Online (Sandbox Code Playgroud)
Bom*_*mbe 53
如果您正在为提交寻找一个唯一且仍然可读的标识符,那么git describe可能就是您的最佳选择.
Von*_*onC 34
你并不是第一个考虑Git中"修订号"的人,但是' wc
'非常危险,因为提交可以被删除或压缩,并重新审视历史.
"版本号"对于Subversion尤为重要,因为在合并的情况下需要它(SVN1.5和1.6在这方面有所改进).
您最终可能会得到一个预提交挂钩,其中包含注释中的修订号,其算法不涉及查找分支的所有历史记录以确定正确的数字.
Bazaar实际上提出了这样一种算法,它可能是你想要做的一个很好的起点.
(正如Bombe的回答所指出的,Git实际上有一个自己的算法,基于最新的标签,加上提交的数量,再加上一些SHA-1密钥).如果适合你,你应该看到(并且赞成)他的答案.
为了说明Aaron的想法,您还可以将Git提交哈希附加到您随应用程序分发的应用程序的"info"文件中.
那样,about box看起来像:
应用程序编号是提交的一部分,但"应用程序"信息"文件"是在打包过程中生成的,有效地将应用程序内部版本号与技术修订版ID相关联.
dem*_*vil 31
你可以使用:
git shortlog -s -n
Run Code Online (Sandbox Code Playgroud)
结果:
827 user one
15 user two
2 Gest
Run Code Online (Sandbox Code Playgroud)
Joh*_*zen 21
要将其变为变量,最简单的方法是:
export GIT_REV_COUNT=`git rev-list --all --count`
Run Code Online (Sandbox Code Playgroud)
Jim*_*ane 21
一个简单的方法是:
git log --oneline | wc -l
Run Code Online (Sandbox Code Playgroud)
oneline
确保.
Sri*_*ula 15
Git shortlog是获取提交详细信息的一种方法:
git shortlog -s -n
Run Code Online (Sandbox Code Playgroud)
这将给出作者姓名后面的提交数量.-s选项删除作者所做的每个提交的所有提交消息.如果您还想查看提交消息,请删除相同的选项.-n选项用于对整个列表进行排序.希望这可以帮助.
Pan*_*war 13
有几种很酷的方法可以做到这一点 -
git shortlog -s
此命令打印对存储库做出贡献的所有用户的提交计数列表。
956 Pankaj Tanwar
235 The Ninja
540 The Hardcore Geek
664 The Ever Shining Star
984 The Experienced Man
Run Code Online (Sandbox Code Playgroud)
简单地说,要获取总提交数 -
git shortlog -s | grep "Pankaj Tanwar"
它打印 -
956 Pankaj Tanwar
Run Code Online (Sandbox Code Playgroud)
git rev-list HEAD --author="Pankaj Tanwar" --count
Run Code Online (Sandbox Code Playgroud)
要计算贡献的代码总行数和提出的拉取请求总数,请查看此博客
如果您只使用一个分支,例如 master,我认为这会很好用:
git rev-list --full-history --all | wc -l
Run Code Online (Sandbox Code Playgroud)
这只会输出一个数字。您可以将其别名为
git revno
Run Code Online (Sandbox Code Playgroud)
让事情变得非常方便。为此,请编辑您的.git/config
文件并将其添加到:
[alias]
revno = "!git rev-list --full-history --all | wc -l"
Run Code Online (Sandbox Code Playgroud)
这在 Windows 上不起作用。我不知道该操作系统的“wc”等价物,但是编写 Python 脚本来为您进行计数将是一个多平台解决方案。
编辑:获取两次提交之间的计数:
我正在寻找一个答案,该答案将显示如何获得两个任意修订之间的提交次数,但没有看到任何提交。
git rev-list --count [older-commit]..[newer-commit]
Run Code Online (Sandbox Code Playgroud)
以下命令打印当前分支上的提交总数。
git shortlog -s -n | awk '{ sum += $1; } END { print sum; }' "$@"
Run Code Online (Sandbox Code Playgroud)
它由两部分组成:
打印按作者分组的日志总数 ( git shortlog -s -n
)
输出示例
1445 John C
1398 Tom D
1376 Chrsitopher P
166 Justin T
166 You
Run Code Online (Sandbox Code Playgroud)
将每个作者的总提交数(即每行的第一个参数)相加,并将结果打印出来(awk '{ sum += $1; } END { print sum; }' "$@"
)
使用与上面相同的例子,它会总结出来1445 + 1398 + 1376 + 166 + 166
。因此输出将是:
4,551
Run Code Online (Sandbox Code Playgroud)