Jenkins Git插件和Refspecs

25
在下面的 Jenkins 作业配置中,“Refspec” 和“分支规范(默认为空白)”有什么区别:

enter image description here

我尝试在作业配置中设置 Refspec 选项:
+refs/heads/master:refs/remotes/origin/master
在我的构建服务器上克隆的代码仓库中,.git/config文件看起来像这样:
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://user:pass@git.internal.com/scm/PROJECT/project.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master

看起来 fetch 的值不正确(从Jenkins作业配置中读取)。此外,它对磁盘空间的消耗没有影响。


显然,仓库的配置不受影响。我不确定这是否是预期行为,但应该注意到,这并不是严格要求的,因为 refspec 可以在 git fetch 命令中包含。因此,您应该尝试检查实际执行的命令。 - bigge
1个回答

28

Refspec 定义了fetch操作的选项(详见这里这里),而branch specifier则定义了包含代码以被Jenkins编译的分支。换句话说:Refspec 仅定义了如何获取代码,而 branch specifier 则指定要编译的代码的哪一个部分。

[编辑:修复refspec的链接错误]


如果我只需要构建例如“my-feature”分支,将refspec设置为“my-feature”是否有意义?这样做是否可以节省空间,而不必获取完整的存储库/所有分支? - u123
原则上讲是对的,但要记住 git 在保持分支轻量级方面做得非常好。也就是说,git 只保存差异,因此获取多个分支的开销只有当分支之间的差异非常大时才会显著。 - bigge
它不会影响磁盘空间的消耗,但似乎该选项从未被设置 - 请参见编辑后的帖子。 - u123
git-scm的链接已经失效了,我找不到替代品。 - Mrchief

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