Jenkins手动触发自由风格项目:提交哈希获分支名部分失效问题
Jenkins提交哈希匹配分支部分无效的原因分析
以下是导致git命令对部分提交哈希无效的常见原因:
提交未关联任何远程分支
如果提交仅存在于本地,或者曾被推送到远程但后续分支被删除、强制覆盖,refs/remotes/origin目录下没有对应的分支引用,git for-each-ref就无法找到关联分支,返回空结果。awk过滤规则限制了结果
原命令中的awk语句/a/ {print $2}只会匹配名称包含字母"a"的分支。如果目标分支名里没有"a",哪怕提交确实属于该分支,也会被过滤掉,造成“无效”的假象。提交由标签而非分支引用
git for-each-ref默认仅遍历refs/remotes/origin下的远程分支,若提交仅被标签(tag)或其他非分支引用指向,自然无法匹配到分支名称。远程分支信息未同步
Jenkins工作区的远程分支缓存如果不是最新状态,比如远程新增了包含该提交的分支但未执行git fetch origin,git for-each-ref查询的还是旧数据,找不到新分支。提交哈希因重写操作失效
若分支经历过rebase、强制推送等改写历史的操作,原提交哈希会被替换为新的哈希值,旧哈希在远程仓库中没有对应的分支引用,无法被--contains参数匹配到。
内容的提问来源于stack exchange,提问作者Mariglen Meta
相关产品推荐
相关产品推荐

