Это дополнительный вопрос к этому обсуждению (ссылка), в которой говорится следующее утверждение:
Номер изменения Gerrit обычно генерируется монотонно, увеличиваясь по мере того, как новые изменения отправляются на рассмотрение на сервер Gerrit. Обратите внимание, однако, что, поскольку проверка кода для разных изменений может занять разное время, нет гарантии, что изменения будут применены к основной ветке по порядку (или будут применены вообще). Таким образом, возможно, чтобы изменение с большим числовым номером изменения Y вступало в силу в главной ветке перед другим изменением с меньшим числовым номером изменения X. Другими словами, в главной ветке, когда есть два изменения с номерами X и Y соответственно, и X‹Y, НЕТ гарантии, что X произойдет раньше Y.
Наша команда была перенесена из SVN, где у нас был монотонно увеличивающийся номер (номер выпуска), который может отражать общий порядок различных версий кода. В частности, мы можем сказать клиентам, что «Ваше программное обеспечение установлено в выпуске X, но мы исправили ошибку только позже в выпуске Y (Y > X). Поэтому, пожалуйста, обновите версию Y или более позднюю, чтобы получить исправление ошибки».
На основании утверждения, изложенного выше, мы не можем использовать номер смены Gerrit для этой цели. Вот мой вопрос:
Может ли Gerrit
сгенерировать номер выпуска, отражающий общий порядок изменений в главной ветке?
Дальнейшее обсуждение
Я понимаю, что git
сам по себе не гарантирует полный порядок в наборе коммитов. Существует только частичный порядок — у каждого коммита есть один или несколько родителей и, следовательно, предков, но два коммита J и K не могут быть ни потомком, ни предком друг друга (т. е. нет происходит до отношений между ними).
Однако с Gerrit
дела обстоят иначе. Gerrit
— это система, созданная на основе git
для облегчения централизованного рабочего процесса. Существует единственная основная ветвь, и существует общий порядок изменений, которые интегрируются (т. е. объединяются или перебазируются) в основную ветвь. Если есть два различных изменения A и B, интегрированных в главную ветку, то либо A происходит до B, либо B происходит до A. Таким образом, это несложно реализовать. функция, которая генерирует серийный номер на основе порядка интеграции, который происходит в главной ветке. И это число будет иметь большую практическую пользу.
git tag
. - person ElpieKay   schedule 23.03.2018