Правильное использование SVN веток и ствола - PullRequest
3 голосов
/ 03 декабря 2009

У меня есть вопрос относительно правильного использования магистрали и ответвлений для моих проектов SVN. Для проекта моей команды мы создаем 3 основных релиза каждый год, а иногда и второстепенный релиз. В любой момент времени мы можем активно разрабатывать 2 или даже 3 релиза. Мы занимались разработкой в ​​отраслях со структурой вроде:

/ филиалы / project1 / 2009,01
/branches/project1/2009.06
/branches/project1/2009.09
/branches/project1/2009.10

На сегодняшний день, когда я готовлюсь создать ветку для следующего выпуска, я объединяю изменения из текущей ветки со стволом, а затем я создаю новую ветку из ствола. Затем я вручную обновляю последние ветки разработчика с помощью исправлений ошибок в ветвях предыдущего выпуска путем слияния через транк. Никакие разработки или коммиты никогда не выполняются в транке (за исключением коммитов для слияний). Теперь мне интересно, для чего мне вообще нужен багажник. Что может быть не так с простым созданием следующей ветки релиза непосредственно из предыдущей ветки релиза и слиянием обновлений исправлений ошибок непосредственно из одной ветки в другую. Можно ли просто удалить проект под стволом?

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

Спасибо!

Ответы [ 3 ]

6 голосов
/ 03 декабря 2009

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

1 голос
/ 03 декабря 2009

Я согласен с the_mandriill - в том, что вы делаете, нет ничего плохого, но нет ничего плохого (по крайней мере в IMO) в том, что вы всегда спрашиваете, можете ли вы добиться большего.

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

K

0 голосов
/ 03 декабря 2009

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

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

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

Если исправление может появиться в ветке выпуска, сравнение такого типа становится намного сложнее. Все еще возможно, хотя я полагаю. Но если ствола нет, вы должны сравнивать каждый релиз друг с другом, и это становится намного сложнее.

...