2009-12-02 2 views
3

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

/branches/project1/2009.01
/branches/project1/2009.06
/branches/project1/2009.09
/branches/project1/2009.10

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

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

Спасибо!

ответ

6

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

1

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

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

K

0

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

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

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

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

Смежные вопросы