Есть ли способ использовать шаблон подстановки с командной строкой SVN? - PullRequest
4 голосов
/ 05 мая 2011

В каталоге tags/ моего репозитория SVN у меня есть что-то вроде:

TAG_BUILD_001
TAG_BUILD_002
TAG_BUILD_003
TAG_BUILD_004
...
TAG_BUILD_100
TAG_BUILD_101
...

Есть ли способ удалить, скажем, все от BUILD_001 до BUILD_099 быстро?

Я пытался:

svn rm https://host/module/tags/TAG_BUILD_0*

но это, похоже, не работает, и я получил следующую ошибку:

svn: URL 'https://host/module/tags/TAG_BUILD_0*' non-existent in that revision

Ответы [ 3 ]

7 голосов
/ 05 мая 2011

На самом деле, svn delete принимает групповые символы, но только если вы делаете локальное удаление, а не через URL. Решением является проверка каталога тегов, а затем удаление тегов.

Теперь, как правило, для этого требуется много времени и несколько гигабайт пространства, поскольку каждый тег представляет собой ревизию всего вашего проекта. Если размер каждого тега составляет 100 мегабайт, вы получите 10 гигабайт.

Однако команда svn co теперь принимает параметр --depth:

$ svn checkout --depth immediates https://host/module/tags svn-tags

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

$ cd svn-tags
$ svn rm TAG_BUILD_00*
$ svn commit -m"Removed tags 000 through 099"

И, что лучше всего, все это делается в одной ревизии.

1 голос
/ 05 мая 2011

Используйте оболочку:

for i in $(seq -w 1 13)
do
  echo "https://host/module/tags/TAG_BUILD_$i"
done

Запустите его и посмотрите на команды, которые вы сгенерировали. Если вы уверены, что это действительно то, что вы хотите сделать, направьте вывод в bash.

0 голосов
/ 05 мая 2011

AFAIK, svn rm не принимает подстановочные знаки в качестве входных данных. Это может быть проблемой. Вы должны удалить теги один за другим, указав фактическое полное имя тега:

svn rm https://host/module/tags/TAG_BUILD_001

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

И последнее, но не менее важное: когда вы используете svn rm, вы должны помнить о коммите. Любые вопросы смотрите здесь .

...