有没有办法在命令行SVN中使用通配符删除?

时间:2011-05-04 21:36:54

标签: svn wildcard

在我的SVN回购的tags/目录中,我有类似的内容:

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

有没有办法快速删除从BUILD_001BUILD_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 个答案:

答案 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