Очень интересная тема была поднята на:
http://rsdn.ru/forum/message/2630147.flat.aspx#2630147Автор: mr.sashich
Дата: 22.08.07
Очень много полезного для себя понял из обсуждения, увидел интересные подходы, участникам обсуждения огромное спасибьо за участие и советы;
Сам сейчас занимаюсь организацией перехода на использование branch|merge механизма, так как до этого пока работали только в trunc, но возникла необходимость в versioning продукта;
сам продукт представляет собой большее решение visual studio 2008 pro edition (no team suite), в котором есть web application (соотвественно, большая коллекция ресурсов, не входящих в solution, но имеющих место в репозитарии, также смапленный на iis development web site),
есть несколько win services, есть отдельный проект project.database для ms sql server management studio — пишу для того чтобы описать текущую ситуацуию и трудности, которые как мне кажется могут возникнуть;
структура репозитария пока приблизительно такая:
project repository:
win service 1
win service 2
web application (resources, images & etc.)
как я понимаю, текущая структура должна остаться trunc-ом, для выделения в репозитарии отдельной ветки под релиз будут использоваться ветки tags, например, /tags/release 1.0, /tags/release 2.0 и так далее, для выделения ветки для решения каких-то отдельных задач, фиксов будут выделяться соотвествующие ветки /brunches/task 1, /brunches/task 2, /brunches/task 3 и так далее, таким образом структура репозитария в дальнейшем будет приблизительно такая:
project repository:
win service 1
win service 2
web application (resources, images & etc.)
/tags/release 1.0
release 2.0
/brunches/task 1
task 2
task 3
(здесь первые три ветки win service 1, win service 2, web application (resources, images & etc.) ) как я и говорил пока остаются trunc без копирования в отдельную ветку trunc;
Вопросы собственно следующие:
1. на клиенте у разработчика используется tortoise svn 1.5, для того чтобы переключиться ему в ветку brunch/task ему нужно сделать switch на эту ветку как я понимаю? таким образом рабочая структура, его настройки в iis, остаются без изменений — просто хочется уточнить, порядок работы именно такой?
2. сейчас рабочая копия на клиенте (work copy) представляет собой следующую картину:
work copy:
win service 1
win service 2
web application (resources, images & etc.)
означает ли что в связи с переходом на branches, tags (после выделения отдельных ветвей) структура рабочего каталога изменится в такую сторону:
work copy:
win service 1
win service 2
web application (resources, images & etc.)
/tags/release 1.0
release 2.0
/brunches/task 1
task 2
task 3
т.е. речь о чем, каждая подпапка release, task будет полной копией репозитария? просто лично у меня, когда я сделал branch при помощи tortoise в репозитарии была выделена отдельная ветка, в которой, если смотреть через browser, полная копия моего trunc, хотя по документации к subversion говорится, что он хранит только ссылки на файлы;
3. к предыдущему вопросу: после выделения ветки под бранчи и теги, если я делаю update на самом каталоге work copy на клиенте у разработчика, у меня затягиваются все эти ветки с полной копией trunc — так и должно быть? или обязательно update делать только на тех каталогах/каталоге рабочей копиии, который является trunc? просто последнее мне непонятно — если subversion хранит только ссылки, то я предполагал, что сделав update на всей work copy я пусть бы и получил бы каталоги branches/task N, но только бы с теми файлыми, в которых имело место изменения или которые вновь добавлены в бранч; просто прошу понять меня правильно, решение очень объемное и не хотелось бы на каждый релиз/баг/фикс иметь полную копию решения;
вот собственно пока такие вопросы, прошу прощения за сумбурность, но наверно пока изза отсутствия опыта работы с ветками не смог сформулировать вопросы более точно;