Jenkins Job Branch Specifier中的master和refs / heads / master之间有什么区别

时间:2019-02-15 14:31:27

标签: git jenkins

他们不鼓励使用<branch>作为工作的分支说明者,并建议使用refs/heads/<branch>

  

如果您要跟踪存储库中的特定分支,请指定分支。如果留空,将检查所有分支并进行更改。

     

最安全的方法是使用refs/heads/<branchName>语法。这样,预期的分支是明确的。

     

如果您的分支名称中包含/,请确保使用上面的完整引用。如果未提供完整路径,则插件将仅使用最后一个斜杠右边的字符串部分。意思是foo/bar实际上会匹配bar。

     

如果您使用带斜杠(例如release /)的通配符分支说明符,则需要在分支名称中指定原始存储库,以确保选择的内容被选中。所以例如起源/发行/

     

可能的选项:

     
      
  • <branchName>
      跟踪/签出指定的分支。如果模棱两可,则采用第一个结果,不一定是预期的结果。更好地使用
      refs/heads/<branchBame>
      例如。大师,feature1`,...
  •   
  • refs/heads/<branchName>
      跟踪/签出指定的分支。
      例如。 refs/heads/masterrefs/heads/featurel/master,...
  •   
     

...

在这里可能会发生什么歧义,并以refs/heads为前缀对此有何帮助?

2 个答案:

答案 0 :(得分:2)

仅由字母a-f和数字0-9组成的分支名称可能与提交哈希冲突,从而导致模棱两可。

您可能还具有与分支同名的标签。

答案 1 :(得分:1)

这特别是詹金斯问题,而不是Git问题。 1615903's answer是与Git问题密切相关的。

您引用的文档阐明了原因:

  

当未提供完整路径时,插件将仅使用最后一个斜杠右边的字符串部分。意味着foo/bar实际上将与bar相匹配。