Когда мы должны обновить версию внутри файла composer.json при использовании потока git

Я пытаюсь реализовать поток git внутри проекта php. Я добавляю новую функцию. Последний тег 1.1.0.

Теперь у меня нет версии 1.1.0 (потому что я добавляю новую функцию). Это означает, что я не должен обновлять версию в файле composer.json.

Должен ли я обновлять версию, когда функция добавляется в разработку? Вши 1.1-название-функции?

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


person sensorario    schedule 17.11.2015    source источник


Ответы (1)


Взгляните на Symfony на Github. На момент написания ветка master использует: 3.0-dev.
https://github.com/symfony/symfony/blob/master/composer.json

Теперь посмотрите на тег 2.7.6. Это использует: 2.7-dev.
https://github.com/symfony/symfony/blob/v2.7.6/composer.json

Наконец, если вы посмотрите на все перечисленные ветки, вы заметите, что они названы в честь каждой версии «major.minor».

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

"dev-master": "1.2-dev"

Когда ваша функция будет завершена, вы объедините ее с «мастером», который уже должен иметь «1.2.0», подготовленный в файле композитора.

Теперь, когда вы будете готовы выпустить 1.2, вы пометите его как 1.2.0, после чего создадите ветку «1.2» и зафиксируете.

Наконец, вы измените файл композитора на «master» на «1.3-dev» и зафиксируете. Все новые функции после этого будут нацелены на «1.3.0».

Пост-релиз

Вам нужно будет поддерживать 1.2, поэтому ваши исправления будут применяться к ветке 1.2. Однако вы захотите, чтобы эти исправления применялись и к мастеру, поэтому на мастере вы используете git merge 1.2. Таким образом, вы все еще добавляете функции в основную версию, но в то же время извлекаете исправления из предыдущей версии.

person Flosculus    schedule 17.11.2015
comment
Итак, ... ветки major.minor всегда называются major.minor-dev в composer.json и просто, ... когда версия готова, ветка помечается как major.minor.X. Опять же, если у меня версия 4.5.42, composer.json говорит 4.5-dev в ветке 4.5, но также и 4.6-dev в основной ветке. Это правильно? - person sensorario; 17.11.2015
comment
Но, ... если у меня фикс 2.3.31, мне нужно слить 2.3 во всех остальных ветках с 2.4 на мастер? Или только мастер? - person sensorario; 18.11.2015
comment
@sensorario Верно, но если ошибка обнаружена в 2.3, общее правило состоит в том, чтобы исправить ее в самой младшей из поддерживаемых второстепенных версий, а затем объединить ее с каждой веткой версии до основной. Это немного сложно объяснить, так как у каждого есть своя формула, но я считаю, что в Symfony2 наиболее последовательная практика. Ветки будут называться major.minor (2.3), композитор будет называться major.minor-dev (2.3-dev), тег будет называться major.minor.patch (2.3.1). Ах, в моем ответе была ошибка, я изменил его на "dev-master": "1.2-dev". - person Flosculus; 18.11.2015