看来很多人都去换了git clone
与组合git init && git fetch
。这看起来相当愚蠢,不幸的是像 Jenkins 这样的工具不会为你做这件事。那么为什么 git clone 不像 git fetch 那样采用 refspec 呢?
具体来说,如果您希望在 Jenkins 上运行 gerrit 触发的构建任务,则需要确保工作空间存在,否则 jenkins 将无法检出包含 gerrit 更改的修订版本。这是因为 gerrit 使用的引用路径不属于 git 克隆获取的路径。
git clone
can take a refspec
通过通用的--config
option:
在新创建的存储库中设置配置变量;这会在存储库初始化后、获取远程历史记录或签出任何文件之前立即生效。 [...] 例如,这使得向原始远程添加额外的获取引用规范变得安全。
Example:
git clone -c remote.origin.fetch=+refs/changes/*:refs/remotes/origin/changes/* https://gerrit.googlesource.com/git-repo
However,我刚刚意识到这对我来说并不像预期的那样工作git version 2.12.2.windows.2
as the changes
克隆时并没有真正获取 ref。它被正确添加到.git/config
,但我需要在克隆后手动获取它
cd git-repo
git fetch
Edit:事实证明是这样的已知错误.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)