Вернуться к старой версии набора исправлений через пользовательский интерфейс Gerrit?

Если у меня есть несколько версий набора исправлений для одного изменения в Gerrit, кажется, что я могу отправить только последнюю версию набора исправлений (потому что только у нее есть нужная кнопка). Есть ли простой способ вместо этого отправить одну из старых версий набора исправлений того же изменения, используя только мой веб-браузер для этого экземпляра Gerrit?

Я знаю, что могу получить нужную версию набора исправлений из моего клиента git и отправить ее как еще одну новую версию набора исправлений сверху, но я хотел бы избежать многократного повторения одинаковых версий набора исправлений в обзоре и обсуждении вокруг него. .


person Bananeweizen    schedule 06.07.2012    source источник
comment
Возможно, стоит добавить вариант использования: случайно нажатая фиксация перебазирования, которая в остальном была идентична. Теперь одобрение +2 потеряно и нужно приставать к коллегам, чтобы они проверили еще раз   -  person Michael    schedule 31.10.2019


Ответы (2)


Нет, извините, в настоящее время это невозможно. Дизайн предполагает, что разработчики будут проверять и тестировать самый последний набор исправлений, поэтому более старые наборы исправлений отправлять нельзя. Их также нельзя просмотреть/проверить. Если вы хотите использовать более старую версию набора исправлений, вы должны отправить ее повторно, чтобы она стала самой последней. Чтобы избежать ошибки нет новых изменений, выполните git commit --amend, и git создаст новый sha1, который Геррит с радостью примет в качестве нового набора исправлений.

person Brad    schedule 06.07.2012
comment
Это не работает: при нажатии на фиксацию старого набора исправлений я получаю сообщение об ошибке «Нет новых изменений». - person oberlies; 26.06.2015
comment
Это немного запутанно. Вам необходимо фактически отменить изменения, внесенные наборами исправлений, следующих за тем, который вы хотите, а затем внести изменения в эти изменения для проверки и повторно отправить. Это вернет вас к состоянию, представленному нужным вам набором исправлений. Вероятно, вы можете сделать это с помощью reflog, если знаете, что ищете, но мне придется оставить это настоящим мастерам git. - person geekofalltrades; 26.06.2015
comment
Вот кое-что, что работает, хотя это может быть и хак: найдите в журнале ссылок состояние HEAD последнего набора исправлений, назовите его X, и состояние HEAD набора исправлений, к которому вы хотите вернуться, назовите его Y. Сделайте git diff HEAD@{X} HEAD@{Y} | git apply --index . Теперь у вас есть поэтапные изменения, которые отменяют все изменения, внесенные между Y и X. Выполните git commit --amend, а затем повторно отправьте проверку. Теперь у вас есть новый набор исправлений, который возвращает вас к состоянию желаемого набора исправлений. - person geekofalltrades; 26.06.2015
comment
Вам не нужно прыгать через столько обручей. Просто ничего не делайте, и git commit --amend создаст новый sha1 для того же коммита. Вы можете отправить это в gerrit, и он подумает, что это новый патч. - person Milimetric; 02.09.2016
comment
@Brad, не могли бы вы включить совет из комментария @Milimetric относительно git commit --amend в свой ответ? - person Brian Cain; 19.09.2016
comment
это вики, каждый может редактировать :) И вы должны, если это улучшит ответ - person Milimetric; 20.09.2016
comment
Спасибо @Milimetric! Это именно то, что мне было нужно. И приятно удивило ваше имя под полезным комментарием :) - person brightbyte; 21.07.2017

Нет правильного способа сделать это, используя только пользовательский интерфейс Gerrit. Выберите конкретный «набор исправлений» из «списка изменений» (например, если в списке изменений 15 наборов исправлений и вы хотите вернуться к набору исправлений № 8). Получите команду вишневого выбора из пользовательского интерфейса Gerrit для необходимого набора исправлений.

Запустите эту команду выбора вишни и используйте git commit --amend, затем отправьте свое изменение. Он сгенерирует новый набор патчей (для приведенного выше примера № 16).

person sbodd    schedule 19.02.2018
comment
Я думаю, что это правильный ответ, тогда почему это -1? - person AmitM; 05.12.2018
comment
Всего одно замечание, чтобы было понятнее: создайте еще одну ветку из master и используйте ту команду Cherry Pick, которую вы скопировали из сети Gerrit, для нужного вам набора исправлений; и тогда ваша новая ветка будет в том состоянии, в котором вы хотите. Нажмите на заголовок, и у вас будет новый набор исправлений, но с тем же идентификатором изменения и так далее. Идеальный. Я не использовал фиксацию исправления. - person WesternGun; 07.07.2021