Вопрос

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

Кто -нибудь еще делает это?

Если так, вы заметили какие -нибудь плюсы/минусы?

Даже если ваша команда не делает этого, есть ли у кого -нибудь мысли об этом макете?

Это было полезно?

Решение

Ты говоришь о Рекламная модель - В статье Preforce подчеркивается проблемы с ней - передавая меняющуюся роли кодовых линий и перемещения работ между филиалами.

Расширение моих взглядов на перечисленные проблемы:

1) Изменение политики кодовых линий:

Каждая строка кода имеет политику, будь то записана и формализована, или полностью подразумевается в голове разработчика. Это определяет, например:

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

При подходе к туловище политика остается фиксированной, поэтому их легче записать, что облегчает их общение (более важно в более широкой команде).

Например, багажник:

  • Любой разработчик может совершить
  • любое изменение
  • Модульные тесты должны пройти
  • Обзор кода после совершения

Версия филиал:

  • Только разработчик технического обслуживания
  • только исправление ошибки
  • ЕДИНЦИОННЫЕ ТЕСТА + Регрессионные тесты
  • Обзор кода 2 другого разработчика перед совершением

Филиал тега:

  • Нет коммитов после творения

Частный филиал разработчика:

  • Только разработчик регистрирует
  • Любое изменение
  • Тестирование необходимо только перед слиянием в багажник
  • Обзор кода перед слиянием в туловище

Если у вас есть модель продвижения по службе, то у вас есть одна политика, находясь в основном разработке, то вы должны рассказать всем, когда вы меняете политику при подготовке к выпуску, то еще одна политика (для строки кода) после выпуска строки.

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

Если вы посмотрите на развитие ядра Linux, вы увидите напряжение между рекламной моделью и моделью туловища: дерево Linus является рекламным образом - оно проходит через циклы между окном слияния и периодом RC/стабилизации. Но Linux -next и -mm появились, чтобы придать линию более багажника.

Распределенные SCM/VCS в любом случае несколько отличаются, политики не должны распределяться ко всем разработчикам, потому что у каждого развития есть свои деревья, и вносит изменения, когда он хочет.

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

2) Движение работы:

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

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

Другие советы

Моя проблема с документом Perforce заключается в том, что она отвергает рекламную модель, не упоминая основное преимущество, уменьшенное накладные расходы. Фактически, статья ошибочно утверждает, что «основная модель» налагает «нет дополнительных административных накладных расходов», высмеивающее требование. Модель «Всегда слияние с туловищем» означает только это - у вас есть накладные расходы, когда все должны слиться. Это бессмысленные накладные расходы, если у вас есть следующая ситуация (которая у нас есть):

а) Небольшая команда (от 5 до 7 разработчиков) все в пределах расстояния друг от друга. Общение-это не проблема, когда нам нужно сделать филиал

а также

б) Кодовая база, где когда -либо есть только 2 основных филиала - производственная филиала и «следующая вещь в разработке». Может быть, однажды в голубой луне у нас есть 3.

Я думаю, моя точка зрения - это ситуационная вещь. Сказать, что «у рекламной модели есть проблемы» - это все равно, что сказать «никогда не используйте или/м». Это зависит от вашей среды.

Подрывная деятельность позволяет оба подхода. Ствол - это не необходимость, а соглашение. Если у вас есть, некоторые инструменты работают легче (например, инструменты миграции для GIT). Если у вас его нет, вы должны делать некоторые вещи вручную, но я не могу думать о том, что вы заметите во время своей повседневной работы.

Недавно я начал работу над проектом, который находится в репозитории подрывной деятельности. Тот, кто создал репозиторий, не последовал какой -либо конкретной макете - они просто набили все в корне репозитория (без ствола/, без ветвей/, и, конечно, без тегов/). Я хотел создать филиал для работы, и некоторые теги для других вещей, но понял, как трудно сделать это в репозитории подрывной деятельности, который не следует надлежащему макету.

Мы делаем - вроде. Мы не используем туловище, но создаем новый филиал для каждого выпуска наших проектов. Этот «Tagged» ветвь является тогда стволом для каждой версии, и мы возвращаемся к ошибкам, объединяя изменения в более старые релизы.

Это хорошо работает для нас, но у нас есть много подпроектов в нашем проекте.

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

Ваша среда может отличаться, хотя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top