Перед тем, как начать, следующее основано на знаниях, полученных в результате использования веб-проектов TortoiseSVN 1.6.x и ASP.NET с Visual Studio 2008 в качестве примера.
CaseИсследование
Скажем, в сценарии счастливого дня типичная структура хранилища subversion может быть где-то похожей на:
/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
Перемещение папок извлечения и вложенных папок может быть немного раздражающим, мы используем пакетные сценарии, чтобы сделать это для нас.
Задача
Я обнаружил невозможность ветвления в этой ситуации, когда пользовательские ветви будут содержать проекты только в разветвленных решениях, а не в общих проектах.
То же самое с тегами, я не могу создать тег, который содержит как снимок версии решения продукта, так иего общие компоненты.
.
Я иду в неправильном направлении?Я сделал этот репозиторий слишком сложным для управления?