Вопрос папки с ветками, ветками и тегами SVN - PullRequest
2 голосов
/ 03 февраля 2012

Я читаю книгу SVN red bean , в которой говорится, что макет папок ствола, веток и тегов выглядит так:

$ svn list file:///var/svn/multi-project-repo
project-A/
project-B/
$ svn list file:///var/svn/multi-project-repo/project-A
trunk/
branches/
tags/
$ svn list file:///var/svn/multi-project-repo/project-B
trunk/
branches/
tags/
$

Теперь все хорошо, но что если я захочу сделать локальную рабочую копию только папок ствола для проекта-A и проекта-B. Если я обновлю URL-адрес, указывающий на «multi-project-repo», я дополнительно получу ненужные мне папки с ветками и тегами. Является ли то, что я спрашиваю, необоснованным (получение только файлов транка) или я разумен, и есть ли простой способ сделать это?

Ответы [ 4 ]

3 голосов
/ 04 февраля 2012

Другой вариант (также в svnbook ) - иметь один набор стволов, тегов и ветвей.

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

/
   trunk/
      calc/
      calendar/
      spreadsheet/
      …
   tags/
      calc/
      calendar/
      spreadsheet/
      …
   branches/
      calc/
      calendar/
      spreadsheet/
      …

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

В этом случае получить сундук, вы получите все проекты. Вот как мы создали наш репозиторий.

3 голосов
/ 03 февраля 2012
svn co http://mycompany.com/svn/Projects/Project1/trunk ./project1-trunk

Это поместит рабочую копию Project1 / trunk в локальный каталог ./project1-trunk.Ни в одном из каталогов нет ничего особенного специального - насколько SVN заботится, это просто каталоги, и вы можете скопировать любой из них.

1 голос
/ 03 февраля 2012

Используйте URL-адрес нужного вам каталога репозитория.Если вам нужен каталог «trunk», проверьте этот подкаталог, а не весь репозиторий.

Продолжайте читать!

0 голосов
/ 04 февраля 2012

Предполагая, что вы используете упомянутый макет и хотите извлечь все стволы всех проектов одной командой, рассмотрите следующую технику:

  1. Создайте дополнительный проект в SVN, например, назовите это all-trunks:

    svn mkdir file:///var/svn/multi-project-repo/all-trunks
    
  2. Сделать рабочую копию all-trunks:

    svn co file:///var/svn/multi-project-repo/all-trunks
    
  3. Редактировать svn:externals свойство рабочей копии all-trunks, чтобы добавить все имеющиеся у вас стволы проекта:

    svn propedit svn:externals .
    ...
    ^/project-A/trunk project-A
    ^/project-B/trunk project-B
    ...
    
  4. Commit:

    svn ci
    

Теперь каждый раз, когда вы хотите получить рабочую копию со стволами всех проектов, вам нужно только оформить заказ all-trunks:

svn co file:///var/svn/multi-project-repo/all-trunks

Каждый раз, когда вы создаете новый проект, не забудьте добавить его в svn: externals.

Вы можете написать сценарий, который получает список всех проектов svn ls file:///var/svn/multi-project-repo (исключая all-trunks) и создает команду для обновления svn:externals из all-trunks.

...