如何计算影响给定子树的 git 提交数量?
我的版本号看起来像 0.1.3,有两个组成部分:
- 0.1(标签)
- 3(标签后提交)
所有这些信息都很容易从 git describe --tags 获取。
对于版本 0.1.3 git describe
可能看起来像
0.1-3-g53d4dec
所有这些都工作正常,但我正在寻找仅影响给定子树的提交数量,而不是整个存储库。如果 examples/
或 test/
中的某些内容发生更改,我不想更改版本号,但如果 src/
中的某些内容发生更改,我会这样做。
基本上,我正在寻找与 git log --relative
工作方式相同的 git describe --relative src/
。
My version number looks like 0.1.3 and has two components:
- 0.1 (the tag)
- 3 (commits after tag)
All this information easy to obtain from git describe --tags
.
For version 0.1.3 git describe
may look like
0.1-3-g53d4dec
All of this works fine, but I'm looking for the number of commits affecting only a given subtree, not the whole repo. I don't want to change the version number if something within examples/
or test/
changed, but I do if something within src/
changed.
Basically, I'm looking for git describe --relative src/
that works along the same lines as git log --relative
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您正在编写 Git 脚本,则应该使用“plumbing”命令而不是“porcelain”命令(请参阅 git(1)。在这种情况下,最有可能的候选者看起来像
git rev-list
。If you are scripting Git, you should really use the “plumbing” commands instead of the “porcelain” commands (see git(1). In this case, the most likely candidate seems like
git rev-list
.听起来最简单的事情就是编写一个简短的脚本 - 调用 git-describe 来确定您基于哪个标签,然后执行类似 git log --pretty=%H $tag.. -- $路径| wc -l 来计算提交次数。
It sounds like the easiest thing to do would be to write a short script - call git-describe to determine what tag you're basing off of, then do something like
git log --pretty=%H $tag.. -- $path | wc -l
to count the commits.我想出了这个:
或者更简单:
谢谢来自 irc://irc.freenode.net/git 的人,
我已经测试过:
1 在
src/
内的最后一个标签后提交。这是正确的。I came up this this:
Or even simpler:
Thanks guys from irc://irc.freenode.net/git
I've tested:
1 commit after last tag within
src/
. That's right.