Gerrit Change имеет статус: отправлено, Merge Pending, как его решить? - программирование
Подтвердить что ты не робот

Gerrit Change имеет статус: отправлено, Merge Pending, как его решить?

Система Gerrit используется только несколькими людьми. После изменения A, и его статус: "Отправлено, Ожидание присоединения". Список изменений на "открытой" веб-странице. Также я заметил, что это изменение зависело от другого изменения B (статус оставлен).

  • Как сделать A указанным на веб-странице "Объединенный"?
  • Как заставить B исчезнуть, поэтому A больше не зависит от B?
4b9b3361

Ответ 1

Если изменение A имеет зависимость от B, то A не может быть объединено до тех пор, пока B не будет объединено. Поскольку вы оставили B, Gerrit не будет автоматически сливать A.

Что вам нужно сделать, это изменить A (возможно, используя git rebase), чтобы он больше не зависел от B, и повторно отправьте изменение на Gerrit.

Ответ 2

FYI. У меня была та же проблема "Отправлено, Слияние в ожидании", когда пользователь дважды нажимает кнопку отправки на той же странице (она дважды нажала кнопку отправки). Это произошло в 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 фиксации. Второй - с новым сообщением Commit Message и "Submitted, Merge Pending".

Когда я удалил всю информацию о второй фиксации:

$ ssh -p 29418 [email protected] 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.

Ответ 3

Какие состояния Грега правильны, автоматическое слияние невозможно. Можно включить только A, используя опцию Gerrit "cherry pick" (по сути, ручное слияние). К сожалению, это не приведет к удалению статуса Gerrit. Я обычно пишу комментарий к этому эффекту, если Contributor не может быть смущен для rebase.

Ответ 5

У меня была такая же проблема с "Представлено, слиянием в ожидании" без какой-либо зависимости или конфликта. Быстрое исправление состоит в том, чтобы пройти через все открытые элементы и посмотреть, есть ли какая-либо другая фиксация в статусе "Отправлено, Слияние в ожидании". Если да, просто оставите их всех.

Затем git commit --amend -m "ваши исходные комментарии" и git нажмите еще раз, на этот раз вы можете объединить свое исправление.

Ответ 6

Я столкнулся с этой проблемой, потому что я нажал тег на имя ветки:

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 может снова объединить мои ожидающие исправления.

Ответ 7

  • Отбросьте свой трюк от Gerrit.

В терминале:

  1. git log
  2. git reset HEAD ~ n

где n - количество фиксации сверху в списке коммитов, сгенерированных на терминале с шага 2

  1. git добавить.
  2. git commit -m "Ваше сообщение"
  3. git нажмите

теперь объедините свою фиксацию на Gerrit.