【问题标题】:How to update a gerrit draft at HEAD:refs/drafts/master?如何在 HEAD:refs/drafts/master 更新 gerrit 草稿?
【发布时间】:2015-11-17 12:07:55
【问题描述】:

我已通过

将草稿推送给 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 gerrit


    【解决方案1】:
    git push ssh://myuser@gerrit.xxx.xx:29418/myproject HEAD:refs/drafts/master
    

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

    后续问题有点模糊。草稿的用例是你想上传你的更改但不做 可公开访问,例如因为你不想让人们开始 审查它呢。根据当地政策,审阅者可能会得到 显式添加或将获取开放的更改并将自己添加为 审阅者。但草稿功能阻止了这一点。如果您确实希望有人审查您的草稿更改,您可以明确 将他/她添加为审阅者。

    更多详情请参考here

    【讨论】:

      【解决方案2】:

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

      第一个问题:自从我推送草稿后,分支已经移动。我不得不合并更改,但我无法将新工作推送到 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 网页上的变基按钮,但在我的情况下不能使用,因为我有冲突。我不得不按照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

      【讨论】:

        猜你喜欢
        • 2020-02-29
        • 2013-08-08
        • 1970-01-01
        • 2018-11-02
        • 2021-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-02
        相关资源
        最近更新 更多