Git cherry-pick: как восстановить идентификатор изменения?

Мы используем Git вместе с Gerrit, а механизм фиксации используется для генерации идентификатора изменения для Gerrit. Теперь вопрос в том, что когда происходит фиксация вишневого выбора, ловушка фиксации не запускается, поэтому один и тот же идентификатор изменения может существовать для разных коммитов в разных ветках. Любая быстрая победа, чтобы сделать изменение идентификатора регенерированным во время сбора вишни?

Спасибо.


person Skywolf    schedule 30.04.2014    source источник


Ответы (4)


Если вы используете достаточно свежую версию Gerrit, на самом деле желательно повторно использовать тот же Change-Id, когда Cherry выбирает фиксацию в другой ветке. Это эффективный метод отслеживания веток, содержащих исправление ошибок, и он хорошо работает для нас в $ DAYJOB.

В более ранних версиях Gerrit были проблемы с повторяющимися идентификаторами изменений, но эта концепция повторяющихся идентификаторов изменений в разных ветвях поддерживалась уже довольно давно.

person Brad    schedule 30.04.2014
comment
О какой версии Геррита вы говорите? И как это будет работать с изменениями, которые были закрыты? - person uncletall; 01.05.2014
comment
Я не уверен, вероятно, это было изменено в диапазоне 2,2–2,4. Вам придется покопаться в примечаниях к выпуску, чтобы найти точное изменение. Если идентификаторы изменений совпадают, но находятся в разных ветвях, Геррит просто создает новую страницу изменений для каждой фиксации. Один будет объединен, а другой будет рассматриваться. Приятная часть этого рабочего процесса заключается в том, что если вы ищете идентификатор изменения, Gerrit покажет все ветки, которые его содержат. - person Brad; 02.05.2014
comment
Спасибо за информацию. Попробую - person uncletall; 02.05.2014
comment
Мой Геррит - 2,7. Проблема в том, что если изменение было закрыто до выбора вишни, выбранное изменение будет отклонено Герритом. Не уверен, является ли это проблемой конфигурации Gerrit или нет. - person Skywolf; 05.05.2014

Просто используйте git commit --amend для выбранной вишни фиксации и удалите строку «Change-Id:» из сообщения фиксации. Если установлен правильный перехватчик (скорее всего, так и есть), будет сгенерирован новый Change-Id.

person user3159253    schedule 30.04.2014

если вы хотите выбрать закрытый обзор, вам нужно сгенерировать новый идентификатор изменения, пожалуйста: git cherry-pick -> git commit --amend, удалите строку идентификатора изменения ---> git push, он создаст новый идентификатор изменения.

person codekata    schedule 13.07.2017
comment
Привет ! Было бы лучше, если вы зарегистрируетесь в формате ответов на вопросы для будущих попыток при переполнении стека. -Спасибо - person Momin; 13.07.2017

Они не обязательно должны быть разными, gerrit позволяет каждому идентификатору изменения существовать один раз в каждой ветке, поэтому вполне нормально иметь одинаковый идентификатор в каждой ветке.

person Andreas Wederbrand    schedule 30.04.2014