从jenkinsfile中的github获取合并分支的列表



我正试图通过使用jenkins中的git branch -a --merged master来获取主分支中合并分支的列表。当我在本地尝试时,我会在执行git pill/ git fetch --all之后获得所有的分支名称。输出在本地显示:

git branch -a --merged master
* master
remotes/origin/master
remotes/origin/devBranch/1.0.0
remotes/origin/devBranch/1.1.0
remotes/origin/devBranch/1.2.0

和我在詹金斯档案馆做的一样。它只显示主分支。

詹金斯文件

steps{
withCredentials([usernamePassword(credentialsId: 'some_jenkins_cred_id', usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
sh("""
git config --global credential.username $GIT_USERNAME
git config --global credential.helper "!echo password=$GIT_PASSWORD; echo"
git fetch --all
git pull origin master
git branch -a --merged master
""")
}
}

我得到输出:

+ git fetch --all
Fetching origin
+ git pull origin master
From https://github.optum.com/paymentintegrity/orbit-spike-ness-logging
* branch            master     -> FETCH_HEAD
+ git branch -a --merged master
----> * master
remotes/origin/master

有办法得到詹金斯文件中的分支机构列表吗?

谢谢

git fetch--all选项在这里是无用的(在某些情况下,它会做一些有用的事情,但您不是在这些情况下(。不要用它。这不是错误的,但它没有帮助,会误导你。这是所有Git用户的通用规则:除非你能描述--all的含义——除了git fetch文档中的一句话:

--all
获取所有远程。

您绝对应该而不是使用--all选项。(问问自己:我为什么使用这个选项?如果你的答案是,因为我想要所有分支,请注意--all从来没有"所有分支"的意思。(

现在,你在Jenkins中得到结果的原因是,Jenkins已经将自己的Git存储库配置为单个分支克隆,也很可能是的克隆。这些都是您在配置Jenkins插件时可以设置的选项。设置单个分支克隆会使克隆运行得更快(使用指定深度的浅克隆也是如此(。但这意味着你实际上无法获得你想要获得的信息。

您需要选择:您希望能够使用git branch -r --merged master1还是想要更快的克隆?如果您希望能够使用git branch -r检查远程跟踪名称,请停止使用单个分支克隆:将refspec(在链接的插件页面中搜索单词refspec(放回标准默认值:

默认的refspec是+refs/heads/*:refs/remotes/REPOSITORYNAME/,其中REPOSTORYNAME是您在上面的存储库中指定的值"名称";领域默认的refspec检索所有分支。如果签出只需要一个分支,那么更严格的refspec可以减少从远程存储库到代理工作区的数据传输。例如,+refs/heads/master:refs/remotes/origin/master将只检索主分支,而不检索其他分支。


1我在这里使用-r,因为这是您真正需要的选项,而不是-a

最新更新