2014-11-03 10 views
0

Обычно mvn:release prepare будет (среди прочего)Высвобождения с использованием Maven, когда ствол только должен содержать версии релиза

  • Обновления версии артефакта к версии и фиксации
  • филиала в теге от версии
  • Обновить версию артефакта до следующей версии SNAPSHOT и совершить

Он отлично справился. Тем не менее, у нас есть новый способ работы:

  • Все развитие сделано в нашей branches/features ветви
  • trunk должен иметь только версию релиза

Мы хотели бы выпускать работать следующим образом:

  1. Мы работаем в features
  2. После выпуска слияние от features до trunk должно быть сделано. Ничто в trunk не должно быть проблемой, так как там не должно быть никаких работ. Другими словами, в точке ствола выпуска должна отражать версию выпуска
  3. Тег из trunk должны были сделаны

Это будет выглядеть следующим образом в SVN: (R = версия Release, S = версия СНАПШОТ)

  1.0.1-SNAPSHOT 
     | 
     |  1.0.2-SNAPSHOT 
     |  | 
     |  | 1.0.3-SNAPSHOT 
     |  | | 
     |  | |   1.0.4-SNAPSHOT 
     |  | |   | 
     | : : | | : : : : | 

features S-S-S-R--S--R-S-S-S-S-S-R-S-> 

       |  |   | 
       \|/ \|/   \|/ 
       V  V   V 

trunk ------R-----R-----------R---> 

       |  |   | 
       \|/ \|/   \|/ 
       V  V   V 

tag  ------R-----R-----------R---> 

       |  |   | 
       |  |   | 
       1.0.1 |   1.0.3 
        | 
        1.0.2 
  • Как это можно сделать?
  • Может ли это сделать только с плагином выпуска? Мы уже используем этот плагин, поэтому было бы неплохо.
  • Может ли это сделать с использованием любых других стандартных плагинов?

ответ

0

Да, похоже, что плагин релиза близок к тому, что вы хотите сделать? Я не уверен, что вы спрашиваете?

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

«-snapshot» указывает на рабочую версию - я знаю, что вы знаете, что :)

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

Как только это будет сделано, вы используете плагин release для тегов/ветвей отсюда.

Поскольку багажник должен отражать то, что вы фактически поставили (стабильная ветка, так сказать). Я хотел бы утверждать, что создание промежуточной ветви может помочь мне прояснить ситуацию: вы могли бы создать филиал «разработчиков», используемый для интеграции ветвей функций. Как только это будет нормально, объедините эти изменения в свой багажник.

В основном вы бы следовать http://nvie.com/posts/a-successful-git-branching-model/ (возможный с SVN тоже, при использовании SVN применяется здесь)

Обратите внимание, что функция ветви имеют некоторые недостатки тоже: http://martinfowler.com/bliki/FeatureBranch.html

Там в 3 эпизодах видео с Neil Ford , В Episode 2 он дает некоторые альтернативы функциональным ветвям.

Назад к maven: вам нужно иметь версию SNAPSHOT на вашем багажнике, плагин выпуска больше не понравится. Единственное в репо без SNAPSHOT - это теги. Эти версии исправлены. В любом отделении обслуживания также будет версия SNAPSHOT (уникальная). Функциональные ветви Обычно делят версию с целевой веткой, с которой они будут сливаться. Примечание. Сервер CI не должен «ветвления функций mvn deploy» или «mvn install» в общий общий репозиторий.