2010-02-02 2 views
1

Прежде чем я начну, на основе знаний, полученных в результате использования веб-проектов 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 патчи и папки с гнездами могут быть немного раздражающими, для этого мы используем скрипты пакетной обработки.

Проблема

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

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

.

Я иду в неправильном направлении? Я сделал этот репозиторий слишком сложным для управления?

+0

Почему не просто переместить все папки в '/ trunk' (Candyland, LollyApp, ...) в общий корень ('/багажник/Candy')? Затем вы можете разветвить/пометить '/ trunk/Candy' и создать ветвь/тег, который включает совместно используемые проекты и библиотеки, не так ли? – bzlm

ответ

1

Используйте svn: внешние, чтобы включить папки под Candyland.

В приведенном ниже примере * отмечает внешний:

+ CandyLand 
    + Candy.Web.Pages 
    + Candy.Web.Services 
    + Candy.Tests 
    * Fundamental.BusinessObjects 
    * Fundamental.DataAccess 
    * Subsonic-2.2 
    * Moq-3.1 
+0

Звучит многообещающе, я попробую это.Есть ли ссылка на страницу сведений? Благодарю. –

+0

Работайте как шарм. Еще раз спасибо. ps/Я настроил свои решения, выполнив следующие http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-externals.html –

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