Производство Fix - IVY, ветки и метки - PullRequest
0 голосов
/ 16 октября 2018

Я только что перешел от SVN и Maven к GIT + IVY, у меня возникли серьезные сомнения по поводу исправления ошибок при управлении тегами.

Давайте предположим, что наш клиент, скажем, клиент X, имеет в производстве версию 1.0нашего программного обеспечения, которое поддерживает несколько клиентов.

Сборка (проект, который собирает все зависимости нашего программного обеспечения) приложения клиента X будет выглядеть следующим образом:

Версия 1.0 Клиент X ПроизводствоФайл проекта ivy.xml проекта сборки:

branch="master" revision="1.0"

 - dependency mod_1 branch=master version=1.0
 - dependency mod_2 branch=master version=1.0
 - dependency mod_3 branch=master version=1.0
 - dependency mod_4 branch=master version=1.0

Заказчик X использует версию 1.0, но в то же время мастер эволюционировал, и давайте предположим, что сейчас это версия 4.0, используемая другими пользователями.

Версия 4.0 Заказчик Y и Z Производственная сборка Project Файл ivy.xml:

branch="master" revision="4.0"

 - dependency mod_1 branch=master version=4.0
 - dependency mod_2 branch=master version=4.0
 - dependency mod_3 branch=master version=4.0
 - dependency mod_4 branch=master version=4.0

Теперь клиент X обнаружил, что существует ошибка, связанная с mod_1.

Они вырезали ветку из mod_1отметьте 1.0 главной ветки (master_1.0_fix) и исправьте ошибку, приводящую к версии 1.0.1 master_1.0_fix

Их сборка будет выглядеть следующим образомсейчас:

Версия 1.0.1 Customer X Production Assembly Project Файл ivy.xml:

branch="master_1.0_fix" revision="1.0.1"

 - dependency mod_1 branch=master_1.0_fix version=1.0.1
 - dependency mod_2 branch=master version=1.0
 - dependency mod_3 branch=master version=1.0
 - dependency mod_4 branch=master version=1.0

Теперь они хотели бы, чтобы имя ветви было выровнено с другими, в нескольких словах они быхотелось бы иметь:

branch="master" revision="1.0.1"

 - dependency mod_1 branch=master version=1.0.1
 - dependency mod_2 branch=master version=1.0
 - dependency mod_3 branch=master version=1.0
 - dependency mod_4 branch=master version=1.0

Но я не думаю, что это будет правильно, так как это не будет представлять правильный поток приложения

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

В SVN тег не относится ни к одной ветви, поэтому я могу иметь тег 1.0, а затем создать исправление для этой версии без необходимости относиться к какой-либо ветви, что для меня является действительно ясной концепцией.

В IVY существует тесная связь с ветвью, из-за которой появляется тег, который мне не совсем понятен.

Существуют разные способы продолжения, но я хочу получить подтверждение о стандартный / лучший подход.

Например, мы можем согласиться с тем, что единственное лучшее и стандартное решение - сохранить ссылку на разностную ветвь, поэтому

branch="master_1.0_fix" revision="1.0.1"

 - dependency mod_1 branch=master_1.0_fix version=1.0.1
 - dependency mod_2 branch=master version=1.0
 - dependency mod_3 branch=master version=1.0
 - dependency mod_4 branch=master version=1.0

Или яможет жестко закодировать ветку в файл ivy.xml во время выпуска и выдвинуть его, ссылаясь на основную ветку, это будет обходной путь, поскольку наша автоматизация фактически не поддерживает это, а также, на мой взгляд, неправильный подход, но я бы хотелПолучите подтверждение от людей, которые имеют более глубокое понимание IVY.

Извините, если вопрос не ясен, но, как вы можете себе представить, это не простая тема для подведения итогов.

...