svn обновление каталога с проверкой нескольких хранилищ - PullRequest
0 голосов
/ 07 октября 2010

У меня есть каталог разработки, который содержит извлечения из репозиториев SVN, которые находятся в каталогах, отличных от SVN. Я хотел бы обновить все каталоги, находящиеся в SVNS.

Структура Dir похожа на приведенную ниже:

alt text

Как бы вы решили проблему?

Я пришел с решением "грубой силы", но оно не очень разумно:

for i in `find . -mindepth 1 -maxdepth 3 -type d | grep -v .svn`; do svn up $i; done

Было бы неплохо иметь что-то подобное:

svn --recursive update development_dir.

Ответы [ 2 ]

6 голосов
/ 07 октября 2010

К сожалению, svn не поддерживает эту функцию.Однако вы можете оптимизировать свою команду, исключив цикл и конвейерную связь с grep.Команда должна выглядеть следующим образом:

find . -mindepth 1 -maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;

Чтобы упростить жизнь, вы можете настроить псевдоним Bash, например:

alias svn_up_recursive='find . -mindepth 1 \
-maxdepth 3 -name "*.svn" -type d -exec svn up {}/.. \;'

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

0 голосов
/ 07 октября 2010

Как насчет создания фиктивной ветки / репозитория и установки внешних ссылок на нужные ветки?таким образом, svn update на верхнем уровне будет обновлять все подпапки.Может быть, вы можете пропустить не svn dir / files.

Вы также можете обмануть svn, имея файл .svn / records в папках non-svn, что приведет к подрывной деятельности, что папка non-svnверсированный.Пока вы не измените имена папок, у вас также не будет проблем с коммитами в этом подходе.

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