Gerrit变更状态为:已提交,待合并,如何解决?

18

Gerrit系统仅由我们数人使用。 当有变更A的状态为"Submitted, Merge Pending"时, 它会在"open"页面的变更清单中出现。 我还注意到这个变更有一个依赖于另一个被废弃的变更B。

  1. 如何让A出现在"Merged"页面上?
  2. 如何让B消失,使得A不再依赖于B?

2
我曾经提出了一个类似的问题,并得到了更详细(对新手有用)的回答。 - trejder
7个回答

25
如果更改A依赖于B,那么在合并B之前,A是不能被合并的。由于您已经放弃了B,所以Gerrit不会自动合并A。
您需要做的是修改A(也许使用git rebase),使其不再依赖于B,并重新将更改提交给Gerrit。

那么如何让B从网页中消失呢? - gemfield
你已经放弃了B,你还想对它做什么? - Greg Hewgill
1
@GregHewgill 我想他的意思是如何从 Gerrit 中删除更改 B 条目,使其好像从未存在过(因此它不会在 Gerrit Web UI 上显示)。我认为在 Gerrit Web UI 中不可能这样做,因为废弃更改条目上有一个“恢复更改”按钮,可以使您从废弃状态中恢复更改。如果仍然想要删除,他们可以从后端手动执行(虽然我从未尝试过)。 - Vikram
建议:尝试由待定提交者对“origin/branch”执行变基操作。 - herbertD

2

提供信息,当用户在同一页上按两次提交按钮时(她双击了提交按钮),我遇到了“Submitted,Merge Pending”的同样问题。这在Gerrit 2.11中发生。

日志中的错误如下:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:     Duplicate entry '5173-2-1' for key 'PRIMARY'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

在��交之前,只有1次提交(代码更改)。但是在双重按下后,就会出现2次提交。第二次提交具有新的提交消息和“已提交,合并待处理”状态。
当我删除了有关第二次提交的所有信息:
$ ssh -p 29418 admin@machine gerrit gsql
gerrit> delete from `patch_set_approvals` where change_id=5173 and patch_set_id=2;
gerrit> delete from `patch_set_ancestors` where change_id=5173 and patch_set_id=2;
gerrit> delete from `patch_sets` where change_id=5173 and patch_set_id=2;

用户 Gerrit Code Review 将其标记为集成。


1
格雷格所说的是正确的,自动合并不可能。可以使用 Gerrit 的“领回”选项(实质上是手动合并)来仅包含 A。不幸的是,这将无法删除 Gerrit 的“合并待定”状态。如果贡献者不能麻烦地重新基于目标分支,我通常会写一个注释说明这一点。

1
  1. 放弃你在Gerrit上的推送。

在终端上执行以下命令:

  1. git log
  2. git reset HEAD~n

其中n是从步骤2生成的提交列表中从顶部开始的提交计数。

  1. git add .
  2. git commit -m "你的信息"
  3. git push

现在在Gerrit上合并你的提交。


0

我曾经遇到过“已提交,合并待定”但没有任何依赖或冲突的问题。快速解决方法是查看所有打开的项目,看是否有其他处于“已提交,合并待定”状态的提交。如果有,就放弃它们。

然后执行git commit --amend -m "你原来的注释"和git push,这次你可以将修复合并。


0

0
我遇到了这个问题,因为我将标签推送到分支名称上:
git tag x.y.z HEAD
git push -f origin x.y.z:master

所以最好推送一个分支,而不是直接提交到主分支。

git tag x.y.z HEAD
git push -f origin HEAD:master

这样Gerrit就能够再次合并我的待处理补丁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接