Gerrit发布非本地变更补丁

时间:2018-10-07 18:59:08

标签: git gerrit

我已经发布了我正在研究的项目的Gerrit更改,并且此后做了一些补丁。但是,我现在在另一台计算机上,并且无法访问以前的计算机。该项目使用Google的git-repo工具。我想以某种方式在本地获取更改,对其进行修改并针对当前更改发布新补丁,而无需创建新补丁。

有问题的Gerrit用于LineageOS,我已经使用these instructions来发布我的更改。

我对Gerrit还是很陌生,所以如果您能解释一下各个步骤的功能,我将很高兴。

1 个答案:

答案 0 :(得分:2)

由于您使用的是新计算机,因此需要先完成initial setup才能访问Gerrit中的项目存储库。

如果需要构建代码,则可能必须重新同步所有项目。如果没有,则只能克隆正在处理的项目。

git clone <repository url>

但是,到目前为止,克隆的存储库尚不可用,因为它不包含与更改的最新补丁集相对应的提交。该补丁集仍处于打开状态,尚未提交并已合并到目标分支,因此默认情况下无法克隆该补丁集。您想要修改它并创建一个新的补丁集。现在,您需要获取提交并进行检出。在更改页面上,您可以在右上角找到Download。单击,您会看到Checkout。复制命令。

cd <local repo>
# paste and run the copied commands
# the commands are git fetch and git checkout, like git fetch <url> refs/changes/xx/xxxx/x && git checkout FETCH_HEAD
# make changes
git add <changed files>
git commit --amend
git push origin HEAD:refs/for/<branch>

请注意,请勿修改或删除提交消息中的更改ID,否则将创建新的更改而不是新的补丁集。如果操作有误,则可以再次运行git commit --amend并将新的更改ID替换为原来的ID。此外,如果您担心网络和磁盘空间的成本,可以使用git init foo && cd foo && git remote add origin <repository_url>代替git clone <repository url>,并在复制的--depth=2中添加git fetch

Gerrit支持在线编辑。因此,如果要进行一些小的更改,还可以编辑最新的补丁集以创建草稿,然后将其发布在更改页面上。您可以在文件列表上方找到Edit按钮。