【发布时间】:2015-02-06 16:40:45
【问题描述】:
在使用 Gerrit(代码审查)时,我经常需要获取给定补丁集的副本以用于测试或验证目的。显而易见且最简单的方法是通过 Gerrit Web 界面下载存档或补丁文件,然后手动将其应用到我的本地源。
虽然上述步骤非常简单并且可以满足我的需求,但在最好的情况下,我希望补丁集在我的本地 Git 中显示为提交。
我环顾四周,没有找到解决方案。我发现一些稀疏信息一旦编译在一起就会给出以下解决方案。
说要拉取Gerrit change 1222的patch set 2:
找到我们感兴趣的远程引用:
$ git ls-remote | grep 1220
From http://something.com:8081/MyProject
e2e0212a59240ac5cd7c11220c35542523f44b59 refs/changes/13/713/1
b8c4dceea5eaf1bad711b0ea6938c80ec932726a refs/changes/20/1220/1
6f20c182ec7f54a2aa9e8f6188a0eef1b0790df4 refs/changes/20/1220/2
ed94a98386d224ce3d86004ce99f61220905a077 refs/changes/22/1222/1
拉取参考:
git pull origin refs/changes/20/1220/2
这将创建一个 Git 提交点,您最终可以变基:
git rebase
【问题讨论】:
-
您是否有任何理由不使用 Gerrit UI 中提供的标准 download 选项?
-
原因是如果有一个待处理的代码审查(由其他人完成),因为我需要在它之上进行更改,所以拉取补丁集更方便的。它允许我在前一个提交点仍在审核中时立即提交我的代码更改。
-
没错,这就是您使用这些下载选项的目的。请阅读文档,您会明白的。
-
FWIW 比较不易出错的 refs 匹配方法是
git ls-remote origin 'refs/changes/*/1220/*'。