Организация моих собственных внешних библиотек в контроле версий - PullRequest
3 голосов
/ 02 марта 2011

Я хочу настроить SVN-репозиторий для "контроля версий" моих проектов. В настоящее время мое рабочее пространство выглядит следующим образом, и я намерен оставить его таким:

\workspace
   \myPrj1
   \myPrj2
   \myLibBase 
   \myLibA
   \myLibB

myPrj1 использует myLibBase и myLibA. myPrj2 использует myLibBase и myLibB. У меня будет больше проектов, которые будут использовать библиотеки. Я написал и пишу библиотеки сам. Работая над любым из проектов, я постоянно пытался улучшить не только проект, но и библиотеки: найти ошибки, добавить функции и т. Д.

Теперь, как мне организовать это в хранилище?

Это моя идея, но лучшее ли это решение?

  1. Я всегда буду использовать рабочее пространство в качестве корня проекта.
  2. Я всегда буду включать библиотеки, используемые проектом, в папку проекта snv
  3. У меня всегда будут дополнительные проекты snv для библиотек

Тогда в репозитории приведенный выше пример будет выглядеть так:

\repository    
   \myPrj1 
       \myPrj1
       \myLibBase
       \myLibA
    \myProj2
       \myProj2
       \myLibBase
       \myLibB
    \myLibBase
       \myLibBase
    \myLibA
       \myLibA
    \myLibB
       \myLibB

Имея это так

... относительно проектов:

Всякий раз, когда я регистрирую рабочую копию проекта, у меня всегда есть все источники, включая библиотеки, регистрирующиеся вместе. Поэтому, когда я извлекаю ревизию, я всегда получаю все источники (включая библиотеки) такими, какими они были на момент регистрации.

... относительно библиотек:

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

Может кто-нибудь подтвердить, что это хорошая идея? Лучшая практика? Есть ли лучший подход? Могу ли я найти документацию / учебные пособия / .. по этой теме? В сети? В книге?

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

Кажется, это то, что вы ищете: Внешние данные

Выдержка: "Иногда бывает полезно создать рабочую копию, которая сделана из ряда различных проверок.Например, вы можете захотеть, чтобы разные подкаталоги приходили из разных мест в репозитории или, возможно, из разных репозиториев. Конечно, вы можете настроить такой сценарий вручную - используя svn checkout для создания такой структуры вложенных рабочих копий, которую вы пытаетесь достичь.Но если этот макет важен для всех, кто использует ваш репозиторий, каждому другому пользователю потребуется выполнить те же операции извлечения, что и вы. "

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

1 голос
/ 02 марта 2011

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

  1. У вас есть разные версии библиотеки с одинаковыми именами
  2. Вы должны перейти и отредактировать все версионные копии, чтобы они были идентичными.

Любойэти возможности не имеют смысла для меня.

Почему бы вам не иметь только одну версионную копию каждой библиотеки, и когда вы извлекаете проект, вам также необходимо проверитьбиблиотеки этого проекта нужны?То есть, если вы хотите избежать проверки других проектов, в противном случае вы можете просто извлечь всю рабочую область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...