2013-03-16 163 views
19

是什么的Refspec分行符(预设为空白)之间的区别:在下面的詹金斯作业配置:詹金斯的Git插件和Refspecs

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:[email protected]/scm/PROJECT/project.git 
     fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
     remote = origin 
     merge = refs/heads/master 

似乎为值取是不正确的(从詹金斯作业配置读取)。此外,它对磁盘空间消耗没有影响。

+0

显然,存储库的配置不受影响。我不确定这是否是预期的行为,但应该指出,这并不是严格要求,因为refspec可以包含在git fetch命令中。因此,您应该尝试检查**执行的是哪个命令。 – bigge 2013-03-17 12:09:12

回答

20

的Refspec限定用于选项取操作(参见herehere),而分支指示符,其分支包含的代码定义要由詹金斯内置。换句话说:Refspec仅定义如何检索代码,而分支说明符将编译代码的哪一部分。

[修改:]修复了无法链接到refspec

+0

好吧,如果我只需要建立例如。 ** my-feature **分支将refspec设置为** my-feature **有意义吗?这将节省一些空间,而不是获取完整的存储库/所有分支机构? – u123 2013-03-16 15:17:46

+0

那么,原则上这是真的,但请记住,git在保持分支轻量级方面做得非常好。也就是说,git只保存差异,因此,如果分支之间存在极其**差异,那么获取多个分支的开销只会很大。 – bigge 2013-03-16 19:09:16

+0

它对磁盘空间消耗没有影响,但似乎从未设置该选项 - 见编辑后。 – u123 2013-03-17 09:58:29