Как я могу проверить только стволы нескольких проектов из одного хранилища? - PullRequest
20 голосов
/ 18 мая 2009

У нас есть один репозиторий SVN с несколькими связанными проектами. Вот так ...

\repo
  \Project1
    \branches
    \tags
    \trunk
  \Project2
    \branches
    \tags
    \trunk
  \Project3
    \branches
    \tags
    \trunk

Я хотел бы проверить ствол каждого проекта в моей рабочей области без папок веток / тегов.

\workspace
  \Project1
    \trunk
  \Project2
    \trunk
  \Project3
    \trunk

Есть ли способ сделать это, не проверяя каждый ствол отдельно?

Ответы [ 9 ]

9 голосов
/ 18 мая 2009

Краткий ответ: нет.

Длинный ответ: см. http://svnbook.red -bean.com / ru / 1.5 / svn.advanced.sparsedirs.html и выполните заказы в зацикленном сценарии.

8 голосов
/ 20 мая 2009

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

svn co -N http://path/to/repo
cd repo
for f in Project1 Project2 Project3; do
  svn up -N $f
  svn up $f/trunk
done

А чтобы обновить стволы позже:

svn up repo/*/trunk

Это работает со всеми клиентами SVN. Если вы используете клиент SVN 1.5.x, вы также можете взглянуть на «разреженные каталоги», задокументированные в Разреженные каталоги (мне пока не разрешено публиковать ссылки : -C), который позволит вам запустить «svn update» в каталоге хранилища.

6 голосов
/ 18 сентября 2009

Это хорошо сработало в bash. Обратите внимание, что я переименовал выходные папки, чтобы сделать Eclipse более счастливым при импорте проектов.

for f in `svn ls http://path/to/repo`; do svn checkout http://path/to/repo/${f}trunk $f; done
1 голос
/ 16 июня 2013

У меня также была необходимость извлекать только стволы из SVN-репозитория, поэтому я написал этот пакет Windows: Извлечение только стволов из SVN-репозитория

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

1 голос
/ 18 мая 2009

РЕДАКТИРОВАТЬ: проверьте SVN Book для разделов ниже

Извлечение 2 разных каталогов в две отдельные рабочие копии:

$ svn checkout file:///tmp/repos/test  file:///tmp/repos/quiz
A  test/a
A  test/b
Checked out revision 2.
A  quiz/l
A  quiz/m
Checked out revision 2.
$ ls
quiz  test

Извлеките 2 разных каталога в две отдельные рабочие копии, но поместите обе в каталог под названием «рабочие копии»:

$ svn checkout file:///tmp/repos/test  file:///tmp/repos/quiz working-copies
A  working-copies/test/a
A  working-copies/test/b
Checked out revision 2.
A  working-copies/quiz/l
A  working-copies/quiz/m
Checked out revision 2.
$ ls
working-copies
0 голосов
/ 28 февраля 2019

Пакетный скрипт Windows:

@echo off
for /f %%G in ('svn ls https://path/to/main/folder/') do (
    mkdir %%G
    cd %%G
    echo Checking out [%%G] project
    svn co https://path/to/main/folder/%%Gtrunk
)
0 голосов
/ 22 декабря 2014

Щелкните правой кнопкой мыши по папке - SVN Check out. Разместите свой URL и нажмите кнопку «Выбрать элемент». С помощью флажков выберите подпапки, которые вы хотите включить.

0 голосов
/ 21 июля 2014

Обнаружено, что это работает, а не выше:

checkoutList.bat:

for %%G in (projectA, projectB, projectC) do (
  echo %%G
  mkdir %%G
  svn co http://your.repo/path/%%G/trunk %%G
)
0 голосов
/ 18 мая 2009

Я подозреваю, что вам все равно придется рассказать об этом (проверить) каждую отдельную линию - но вы также можете, по крайней мере, также проверить рабочее пространство (чтобы получить все проекты, и, таким образом, вы можете обновить и т. Д. Глобально), используя разреженных каталогов .

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