2011-05-04 70 views
4

tags/目录我的SVN回购的,我有这样的:有没有办法使用通配符删除与命令行SVN?

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 
+0

如果没有,你当然可以写一个简单的脚本来为你做... – forsvarir 2011-05-04 21:48:25

+0

当然,我只是想知道是否有任何参数或标志,我可能会使用:) – ryanprayogo 2011-05-04 22:23:48

回答

7

实际上,svn delete确实需要通配符,但前提是您要进行本地删除而不是通过URL。解决方案是检查标签目录,然后删除标签。

现在,通常情况下,这样做需要大量的时间和数GB的空间,因为每个标记都代表整个项目的修订。如果每个标签的大小为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" 

而且,最重要的是,它都是在一次修订中完成的。

+0

这正是我所需要的。谢谢 :) – ryanprayogo 2011-05-05 17:41:57

0

据我所知,svn rm不采取通配符输入。这可能是问题所在。你必须通过一个删除标记之一,指定实际全标签名:

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

现在,如果你有一个可视化工具(如TortoiseSVN的),你可以选择你要删除的标签和他们,删除它们。

最后但并非最不重要的是,当您使用svn rm时,您必须记住提交。有任何问题,请看here

1

使用shell:

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

运行它,看看你生成的命令。如果您确定这确实是您想要执行的操作,请将输出传输到bash

相关问题