【问题标题】:Getting wrong value of number of commits获取错误的提交次数值
【发布时间】:2022-12-05 08:20:15
【问题描述】:
def generateVersion() {
    def commitCount = sh(script: "git rev-list --count HEAD", returnStdout: true).trim() as Integer
    echo "this is commitcount------------->>>>>>>>>>>>>>>> ${commitCount}";
    def metadata = readJSON file: 'package.json'
    def (major, minor) = metadata.version.tokenize('.')
    def patch = commitCount
    def prerelease = env.BRANCH_NAME == 'master' ? '' : "-${env.BRANCH_NAME}"
    return "${major}.${minor}.${patch}${prerelease}"
}

这是我在 Jenkinsfile 中编写的常规代码。它应该返回给我一个独特版本的构建。此函数在 Publish Libraries 阶段被调用。

....
stage('Publish Libraries') {
            dir('External') {
                libVersion = generateVersion()
...
...

我无法获得正确的 commitCount 值,因此无法获得错误的补丁值。无论我在我的分支中做了多少次提交,它都保持一致的值 5。我已经从另一个最初有 56 次提交的功能分支创建了一个分支。所以当我创建一个分支时,它最初有 56 个提交。我在新创建的分支中添加了我自己的 11 次提交,因此分支中总共有 67 次提交,但它显示计数仅为 5。我该怎么办?

我什至试过:

def commitCount = sh(script: "git rev-list --count ${env.BRANCH_NAME}", returnStdout: true).trim() as Integer

想也许我的 HEAD 在我不知情的情况下被设置到其他分支。但是 commitCount 仍然是 5。

【问题讨论】:

  • 如果将第一行拆分为 2 个操作。只需获取字符串,用echo "Commit test was '$commitCountString'", and _then_ do as Integer`打印出来,打印出来的是什么?
  • 您的克隆操作是如何配置的?
  • @tim_yates 我把它们分开了,但都是 5 和 5 仍然

标签: git jenkins groovy artifactory commit


【解决方案1】:

你几乎肯定在使用浅克隆使用--depth=5(以及相应的隐含--single-branch)。在这种情况下,git rev-list HEAD 统计的修订永远不会超过五个。要解决此问题,请告诉 Jenkins 使用非浅层克隆(请参阅git clone without history using SCM)。

请注意,--count 不是获得唯一修订说明符的可靠方法,即使您进行完整(非浅层)克隆也是如此。原因很简单:从某个分支提示可到达的提交数量不一定会增加(例如,git reset删除从分支提示提交),以及可从feature/afeature/b到达的提交数可能是相同的:

          o--o   <-- feature/1
         /
...--o--o   <-- main
         
          o--o   <-- feature/b

在这里,假设从 main 开始并向后计算找到的修订计数是 200。每个功能分支上有两个提交,它们是不是main 上,加上 200 次提交main 上,所以两个分支上的计数都是 202。但是在feature/a 上的提交与在feature/b 上的提交不同。

如果您想要一个至少比原始哈希 ID 稍微不那么难看的提交的唯一描述性名称,请考虑使用 git describe(可能使用 --always 和/或 --dirty)。让它发挥作用出色地, 请务必使用标签(最好是带注释的发布标签),并可能添加 --tags 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2021-05-01
    • 2018-04-25
    • 2016-08-09
    相关资源
    最近更新 更多