Подтвердить что ты не робот

Использование Subversion Without Trunk

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

например. Ствол:

  • любой разработчик может зафиксировать
  • любое изменение
  • модульные тесты должны проходить
  • обзор кода после фиксации

Вершина версий:

  • только техобслуживание
  • Исправлено только исправление ошибок.
  • unit test + регрессионные тесты
  • обзор кода другим разработчиком до фиксации

ветвь тега:

  • не регистрируется после создания

Отдельная ветвь разработчика:

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

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

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

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

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

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

2) Перемещение работы:

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

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

Ответ 2

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

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

и

b) кодовая база, где на самом деле есть только две основные отрасли - производственная ветвь и "следующая вещь в развитии". Может быть, однажды в голубой луне у нас будет 3.

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Однако среда может отличаться.