在我的SVN回购的tags/
目录中,我有类似的内容:
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
答案 0 :(得分:7)
实际上,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 :(得分:1)
使用shell:
for i in $(seq -w 1 13)
do
echo "https://host/module/tags/TAG_BUILD_$i"
done
运行它并查看您生成的命令。如果您确定这确实是您想要做的,请将输出传递给bash
。
答案 2 :(得分:0)
AFAIK,svn rm
不会将通配符作为输入。这可能是问题所在。您必须逐个删除标记,指定实际的完整标记名称:
svn rm https://host/module/tags/TAG_BUILD_001
现在,如果你有一个可视化工具(例如TortoiseSVN),你可以选择要删除的标签,然后删除它们。
最后,但并非最不重要的是,当您使用svn rm
时,您必须记得提交。如有任何问题,请查看here。