如何获取Git标签的总数

5

我希望能够获取存储库中标签总数。

Grgit 存储库已经解决了这个问题。

git = org.ajoberstar.grgit.Grgit.open()
git.tag.list().size()

但它是用Groovy编写的,我想要一个Gradle版本。

git describe --tags $(git rev-list --tags --count)

上面的代码可以得到总提交次数。
我目前有以下片段,可以获取总提交次数。
versionCode = { ->
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'rev-list', '--first-parent', '--count', 'HEAD'
            standardOutput = stdout
        }
        return Integer.parseInt(stdout.toString().trim())
    }
    catch (ignored) {
        return -1
    }
}

我参考了这个SO问题,但是没有得到恰当的答案。

2个回答

11

如果您不介意在git之外使用命令...

git tag | wc -l
注:该命令用于计算git存储库中的标签数量。

是的,这在命令行上很有效,但我正在尝试将其放入Gradle脚本中。让我试试,如果您有解决方案,请编辑您的答案。 - Rinav
3
x=0;git for-each-ref refs/tags | while read ref; do x=$((x+1)); echo $x; done | tail -n1这段代码的作用是计算Git仓库中标签的数量并将结果存储在变量x中。 - EncryptedWatermelon

3

我用以下解决方案弄明白了问题。@EncryptedWatermelon的回答帮助我找到了这个解决方案。不过,我更愿意有一个比这更好的解决方案。

getVersionCode = {
    def proc = 'git tag'.execute() | 'wc -l'.execute()
    proc.waitFor()
    return proc.text
}

@EncryptedWatermelon 感谢你的提示。


只是提醒一下,为了表达对答案/评论的感激之情,请务必“点赞”。就像EncryptedWatermelon的评论应该被点赞一样。 - Steve Wall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接