18

Gerrit系统只有我们几个人使用。一旦有变更 A,其状态为:“已提交,合并待定”。“打开”网页中的更改列表。此外,我注意到此更改依赖于另一个更改 B(该状态已被放弃)。

  1. 如何在“合并”网页上列出 A?
  2. 如何使 B 消失,使 A 不再依赖 B ?
4

7 回答 7

25

如果更改 A 依赖于 B,则在 B 合并之前不能合并 A。由于你已经放弃了 B,Gerrit 不会自动合并 A。

您需要做的是修改 A(可能使用git rebase),使其不再依赖于 B,然后将更改重新提交给 Gerrit。

于 2012-01-05T03:40:55.113 回答
2

供参考。当用户在同一页面上按两次提交(她双击提交按钮)时,我遇到了同样的“提交,合并挂起”的问题。它发生在 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 标记为集成。

于 2015-05-18T13:37:29.627 回答
1

格雷格所说的是正确的,自动合并是不可能的。可以通过使用 Gerrit 的“cherry pick”选项(本质上是手动合并)来合并 A。不幸的是,这不会删除 Gerrit 的“合并挂起”状态。如果 Contributor 不能被 rebase 困扰,我通常会为此写评论。

于 2013-01-09T21:02:08.910 回答
1
  1. 放弃 Gerrit 的推动。

在终端:

  1. 混帐日志
  2. git重置头~n

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

  1. 混帐添加。
  2. git commit -m "你的信息"
  3. git 推送

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

于 2017-06-10T18:22:16.220 回答
0

家伙。如果你提交有标签,你可能会遇到一个错误。此错误已在 Gerrit V2.7 中修复。

错误参考: https ://groups.google.com/forum/#!topic/repo-discuss/tLVMibfzroc

于 2013-11-15T08:43:37.070 回答
0

我遇到了同样的“提交,合并挂起”的问题,没有任何依赖或冲突。快速修复是检查所有打开的项目,看看是否有任何其他提交处于“已提交,合并待处理”状态。如果是的话,就放弃他们。

然后 git commit --amend -m "your original comments" 和 git push 再次,这次你可以合并你的修复。

于 2015-02-27T19:19:13.640 回答
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 就能够再次合并我的待处理补丁。

于 2016-12-07T07:55:02.020 回答