我的版本号看起来像0.1.3,有两个组成部分:
所有这些信息都可以从git describe --tags
轻松获得。
对于版本0.1.3 git describe
可能看起来像
0.1-3-g53d4dec
所有这一切都运行正常,但我正在寻找仅影响给定子树的提交数量,而不是整个回购。如果examples/
或test/
内的内容发生变化,我不想更改版本号,但如果src/
内的某些内容发生变化,我就会更改。
基本上,我正在寻找与git describe --relative src/
一致的git log --relative
。
答案 0 :(得分:4)
如果您正在编写Git脚本,那么您应该使用“plumbing”命令而不是“瓷器”命令(请参阅git(1)。在这种情况下,最可能的候选者似乎是git rev-list
。< / p>
git rev-list --full-history v0.1.. -- src | wc -l
答案 1 :(得分:2)
听起来最简单的事情就是编写一个简短的脚本 - 调用git-describe来确定你所依据的标记,然后执行git log --pretty=%H $tag.. -- $path | wc -l
之类的操作来计算提交。
答案 2 :(得分:1)
我想出了这个:
git log $tag.. --pretty=%h --relative $path | wc -l
甚至更简单:
git log --oneline $tag.. -- $path | wc -l
谢谢你们来自irc://irc.freenode.net/git
我测试过了:
git init Initialized empty Git repository in /private/tmp/test/.git/ $ touch a $ git add a $ git commit -m 'first' [master (root-commit) f8529fc] f 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 a $ git tag -m 'F' v0.1 $ git tag v0.1 $ mkdir src $ touch src/b $ git add src/b $ git commit [master a5345cd] B 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/b $ git log --oneline $tag.. -- $path | wc -l 1
在src/
内的最后一个标记后提交1次。那是对的。