2015-03-09 3 views
0

Я знаком с структурой классического/туловища/ветвей/тегов для репо SVN, но, похоже, очень мало советов о том, как структурировать репо внутри этого, особенно ветвей ,Как структурировать SVN-репо в каталоге филиалов

Скажем, верхний уровень моего исходного дерева - это проект под названием P. Багажная часть репо проста - это просто багажник/P, потому что есть только один багажник.

Для тегов, я могу структурировать их в соответствии с номером версии, так что я бы

tags/v3/v3.2/v3.2.7/P 
tags/v3/v3.3/v3.3.1/P 

и т.д. и т.п.

Для отраслей, это сложнее. Обычно у меня есть ветвь «последняя стабильная v3.2», но также может иметь активные ветви функций для 3.2. Конечно, у меня также есть ветви функций для туловища, и, похоже, имеет смысл держать их отдельно от ветвей функций для других версий. Таким образом, один вариант для структуры репо будет:

branches/3.2/stable/P 
branches/3.2/feature1/P 
branches/trunk/feature2/P 

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

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

ответ

2

Вы структурировали свой многопроектный репозиторий назад от recommended setup. Вы должны поместить сундук, теги и ветви INSIDE project P, а не наоборот.

Я думаю, что очень мало смысла придерживаться ваших тегов в подобъектах. Что вы надеетесь получить, сделав так? Вы не будете ссылаться на выпущенную версию как 3/3.1/3.1.1. Вы бы назвали это просто 3.1.1. Итак, зачем использовать теги, используя прежний метод?

Филиалы имеют немного больше смысла, и я могу видеть, с чем вы собираетесь работать, но я думаю, что по-прежнему рекомендую не делать вложенные папки. Я думаю, вам нужно разработать функцию или исправление в одной ветви (желательно, если вы не работаете с ней, но это не все, что важно), а затем переносите ее на другую ветвь, которая нуждается в ней, с помощью единственной ревизии слияния. Тогда вам просто нужна ветка «feature1» и «feature2» вместо указания, откуда она взялась. История должна рассказать вам, откуда она взялась, и mergeinfo на каждой ветке/туловище должно сказать вам, есть ли у каждой ветви функция или нет.

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