Проблемы с организацией потоков perforce для размещения нескольких основных ветвей с потоками

Итак, у нас есть проект, в котором одновременно работает несколько основных веток. Итак, есть 1.0.0, 2.0.0 и 3.0.0. Вещи, которые входят в 2.0.0, не могут войти в 1.0.0 и т. д. Каждая ветвь объединяется вперед, 1.0.0 › 2.0.0 › 3.0.0.

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

Итак, я думаю, мой вопрос в том, есть ли правильный способ настроить потоки для чего-то подобного?

Спасибо

введите здесь описание изображения


person Brett    schedule 05.12.2020    source источник


Ответы (1)


Многие предположения об использовании основной модели исходят из среды, в которой выпуски удаляются относительно редко (два раза в год) и исправляются только для критических ошибок, поэтому изменения, которые должны переходить от одного выпуска к другому, как правило, скорее исключение, чем правило. В этой модели подавляющее большинство слияний происходит просто из новейшего релиза (например, пока релиз стабилизируется, что происходит в момент цикла, когда в предшествующем релизе очень мало активности) или из ветки разработки. обратно в основную ветку, а из основной ветки обратно в ветки разработки (поскольку ветки разработки в основном работают над новыми функциями, предназначенными для основной ветки, а не каких-либо выпускных веток). Изменения переходят из основной ветки в ветку релиза только в том случае, если они отбираются вручную для устранения критической ошибки (что случается редко), и никогда прямо из ветки разработки в ветку релиза. Немного неловко выбирать исправление из старой ветки релиза до нескольких веток более поздних релизов, но в этой модели это происходит очень редко, поэтому неловкость не имеет большого значения.

Если вы очень активно работаете над несколькими релизами одновременно, основная модель имеет меньшее значение, поскольку вам нужно:

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

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

Чтобы реализовать неосновную модель в потоках (которая все еще имеет некоторую ценность без руководств по управлению потоком, поскольку она поможет вам управлять представлениями клиентов и еще чем-то), вы, вероятно, захотите использовать некоторую комбинацию:

  • сделать каждый поток после начальной основной линии потоком development (я думаю, это наиболее допустимый)
  • установите параметр mergeany в каждом потоке (что позволяет объединяться во всех направлениях, а не пытаться обеспечить жесткость, которая является концепцией основной модели)
  • используйте параметр -F при слиянии, чтобы игнорировать направление потока (я думаю, что mergeany делает это ненужным, если вы используете его последовательно)
person Samwise    schedule 05.12.2020
comment
Спасибо за подробное объяснение! Глядя на ваше предложение, я думаю, что у меня есть кое-что, что должно сработать. По сути, основной поток ни для чего не используется, но потоки разработки создаются на его основе и вставляются между последними. - person Brett; 07.12.2020