Gerrit Change имеет статус: отправлено, Merge Pending, как его решить?
Система Gerrit используется только несколькими людьми.
После изменения A, и его статус: "Отправлено, Ожидание присоединения".
Список изменений на "открытой" веб-странице.
Также я заметил, что это изменение зависело от другого изменения B (статус оставлен).
- Как сделать A указанным на веб-странице "Объединенный"?
- Как заставить B исчезнуть, поэтому A больше не зависит от B?
Ответы
Ответ 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.
Ответ 4
Гай.
Если у вас есть тег, вы можете встретить ошибку. Эта ошибка была исправлена в Gerrit V2.7.
Ссылка на ошибку:
https://groups.google.com/forum/#!topic/repo-discuss/tLVMibfzroc
Ответ 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.
В терминале:
- git log
- git reset HEAD ~ n
где n - количество фиксации сверху в списке коммитов, сгенерированных на терминале с шага 2
- git добавить.
- git commit -m "Ваше сообщение"
- git нажмите
теперь объедините свою фиксацию на Gerrit.