Мы рассматриваем переход от SVN к распределенному VCS на моем рабочем месте.Управление релизами с системой управления распределенной версией
Я знаком со всеми причинами желания использовать DVCS для повседневной разработки: локальный контроль версий, более легкое разветвление и слияние и т. Д., Но я не видел столько, что убедительно в терминах управления версиями программного обеспечения. Вот наш выпуск:
- Узнайте, какие изменения доступны для слияния.
- Заполните запрос, чтобы найти дефекты/билеты, связанные с этими изменениями.
- Отфильтровать изменения, связанные с "открытыми" билетами. В нашей среде билеты должны находиться в закрытом состоянии, чтобы слиться с филиалом выпуска.
- Отфильтруйте изменения, которые мы не хотим в ветви релиза. Мы очень консервативны, когда речь идет о слиянии изменений. Если изменение не является абсолютно необходимым, оно не объединяется.
- Объединить имеющиеся изменения, желательно в хронологическом порядке. Мы группируем изменения вместе, если они связаны с одним и тем же билетом.
- Заблокируйте нежелательные изменения из ветви освобождения (
svnmerge block
), поэтому нам не придется иметь дело с ними снова.
Иногда мы можем манипулировать 3-5 различными вехами за раз. Некоторые этапы имеют очень разные ограничения, и список блоков может занять довольно много времени.
Я уже возился с git, mercurial и пластиком, и насколько я могу судить, ни один из них не очень хорошо относится к этой модели. Похоже, что они будут работать очень хорошо, когда у вас будет только один продукт, который вы выпускаете, но я не могу себе представить, как использовать их для манипуляции несколькими, очень разными продуктами из одной и той же базы кода.
Например, вишневый сбор, кажется, является запоздалой мыслью в меркуриальном. (Вы должны использовать расширение «трансплантация», которое по умолчанию отключено). После того, как вы заштриховываете переход в ветвь, он все еще появляется как доступная интеграция. Вишневый сбор разрушает меркурийный способ работы.
DVCS, по-видимому, лучше подходит для филиалов функций. Нет необходимости в наборе вишни, если вы сливаетесь непосредственно из ветки функций в магистраль и в отделении выпуска. Но кто хочет делать все, что сливается все время? И как вы запрашиваете, что доступно для слияния? И как вы убедитесь, что все изменения в ветви признака совпадают? Это звучит как полный хаос.
Я разорван, потому что кодер во мне хочет DVCS для повседневной работы. Я действительно хочу это. Но я боюсь того дня, когда я должен поставить шляпу менеджера релиза и разобраться, что нужно объединить, а что нет. Я хочу написать код, я не хочу быть обезьяной слияния.
> Проще говоря, каждый релиз в ветке. Вместо того, чтобы блокировать изменения, которые вы не хотите, принимайте только те, которые вы делаете, только подписываясь на выпуск тех изменений, которые входят в выпуск. Я читал это раньше, но я не могу понять, как мы это применим. В нашем рабочем процессе, когда изменение превратилось в туловище, это «хорошее» изменение. Это уже было подписано. То, что мы объединяем/блокируем, - это соответствующие/ненадлежащие изменения в конкретных ветвях выпуска. I.e, изменение XYZ желательно для продукта A, но нежелательно для продукта B. –