Прежде чем я начну, на основе знаний, полученных в результате использования веб-проектов TortoiseSVN 1.6.x и ASP.NET с Visual Studio 2008 в качестве примера.Лучшая практика управления SVN с решением с участием нескольких проектов
Case Study
Скажем, в сценарии счастливый день, типичная структура хранилища диверсия может быть где-то подобное:
/trunk
/Solution1
/ProjectA
/ProjectB
/ProjectC
/tags
/Solution1
/version_1.0-rc
/version_1.1
/branches
/users
/travis
/Solution1
/john
/Solution1
Solution1
является Visual Studio Раствор, содержащий от 1 до многие проекты Visual Studio.- Пользователи работают над своей собственной ветвью решений, время от времени сливаясь с туловищем. Никто не работает прямо на багажнике.
- Теги создаются с багажника при наличии публичного выпуска.
Однако в реальном мире структура проекта не так проста, поскольку многие проекты Visual Studio разделяются между различными решениями Visual Studio. Хранилище выглядит как:
/trunk
/CandyLand
/Candy.Web.Pages
/Candy.Web.Services
/Candy.Tests
/LollyApp
/Lolly.App.WinForm
/Lolly.App.Services
/Lolly.Tests
/Fundamental
/Fundamental.BusinessObjects
/Fundamental.DataAccess
/Components.ExternalLibraries
/Subsonic-2.2
/Moq-3.1
/Lucene.NET-2.0
Где в примере есть 2 модели Candy
и Lolly
, и общие компоненты (Visual Studio проекты, библиотеки DLL) будет в Fundamental
и Components.ExternalLibraries
папки соответственно.
Предположит отработку хобота, чтобы работать на CandyLand
Visual Studio Solution, мне нужно оформить свои файлы из хранилища, а также необходимые компоненты, поэтому структура решения может выглядеть примерно так:
+ CandyLand
+ Candy.Web.Pages
+ Candy.Web.Services
+ Candy.Tests
+ Fundamental.BusinessObjects
+ Fundamental.DataAccess
+ Subsonic-2.2
+ Moq-3.1
Moving патчи и папки с гнездами могут быть немного раздражающими, для этого мы используем скрипты пакетной обработки.
Проблема
Я нашел, что это невозможно расшириться при этом обстоятельстве, где ветвь пользователя будет содержать только те проекты, в разветвленных решениях, а не общие проекты.
То же самое с тегами, я не могу создать тег, содержащий как моментальный снимок версии решения продукта, так и его общих компонентов.
.
Я иду в неправильном направлении? Я сделал этот репозиторий слишком сложным для управления?
Почему не просто переместить все папки в '/ trunk' (Candyland, LollyApp, ...) в общий корень ('/багажник/Candy')? Затем вы можете разветвить/пометить '/ trunk/Candy' и создать ветвь/тег, который включает совместно используемые проекты и библиотеки, не так ли? – bzlm