如何在 HEAD:refs/drafts/master 处更新 gerrit 草稿?

How to update a gerrit draft at HEAD:refs/drafts/master?

我已经通过

将草稿推送给了 gerrit
git push ssh://myuser@gerrit.xxx.xx:29418/myproject HEAD:refs/drafts/master 

但我需要在审核中更新它。

我读了https://review.openstack.org/Documentation/intro-quick.html#_reworking_the_change 但我认为该建议并非专门针对草稿。

那么我可以 git 修改我的提交,然后使用与之前完全相同的命令推送它吗?审稿人会是什么样子?

git push ssh://myuser@gerrit.xxx.xx:29418/myproject HEAD:refs/drafts/master

是的,上面提到的命令会将新的补丁集应用到草稿中。

后续问题有点模糊。草稿的用例是你想上传你的更改但没有成功 可公开访问,例如因为你不想让人们开始 审查它呢。根据当地政策,评论者可能会得到 明确添加或将选择打开的更改并将自己添加为 reviewers.But 草稿功能会阻止 this.If 如果您确实希望有人审核您的草稿更改,您可以明确 添加 him/her 作为审阅者。

参考here了解更多详情

由于这是一次痛苦的经历,所以这是我的笔记;希望他们能有所帮助...

第一个问题:自从我推送我的草稿后,分支已经移动了。我不得不合并更改,但我无法将新工作推送到 refs/drafts/master,因为它们包含合并 ...

  ! [remote rejected] HEAD -> refs/drafts/master (you are not allowed to upload merges)

所以我尝试了来自 https://wiki.opendaylight.org/view/GIT_Cheat_Sheet 的建议,但得到了同样的错误。 我了解到您通常可以在 gerrit 网页上使用 rebase 按钮​​,但在我的情况下不能,因为我遇到了冲突。我不得不按照 https://gerrit-review.googlesource.com/Documentation/intro-user.html#rebase 中的描述手动变基。尽管该页面引用了 HEAD:refs/for/master,但我只是做了同样的事情,除了 HEAD:refs/drafts/master 并且 rebase 起作用了。

接下来,我必须在我的本地分支中从 gerrit 检出重新设置的更改(作为单个检出两个补丁集)。然后我进行了新的更改,确保在提交消息中使用正确的 Change-Id:,并再次推送这也失败了(消息类似于 (you are not allowed to multiple drafts with same Change-Id:)。 为了解决这个问题,我必须 git squash 我的提交,即。下载的更改 + 我的编辑。我推了这个,一切都很好。它在 gerrit 网页中显示为 3 个补丁集。

最后我点击了发布按钮,我想它被推到了 HEAD:refs/for/master。重要的是要记住用你想在 git 历史记录中出现的文本更新组合提交消息(因为发布后不容易编辑)

另见 https://gerrit-review.googlesource.com/Documentation/intro-user.html#submit