删除SVN目录

当使用了svn版本控制系统后每个目录下都会有一个.svn目录存在,开发完当交付产品或者上传到服务器时一般要把这些目录删除,这里总结了一下在linux和win下的办法。

一、在linux下删除SVN

删除这些目录是很简单的,命令如下

find.-typed-name".svn"|xargsrm-rf

或者

find.-typed-iname".svn"-execrm-rf{}\;

全部搞定。

二、在windows下删除SVN用以下法子:

1、在项目平级的目录,执行dos命令:

xcopyproject_dirproject_dir_1/s/i

2、或者在项目根目录执行以下dos命令

for/r.%%ain(.)do@ifexist"%%a\.svn"rd/s/q"%%a\.svn"

其实第二种方法可以用来干很多事的,比如把代码中的.svn替换为任意其他文件名并在硬盘根目录下执行,就可以从硬盘上删除所有的这个文件啦。

3、加注册表

JonGalloway提供了一段注册表代码,可以将”DeleteSVNFolders”命名增加到资源管理器的右键上,这样,鼠标点两下就能把选中目录下的所有.svn目录干掉了。Worksjustgreat!

代码为:

WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]@=”DeleteSVNFolders“[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]@=”cmd.exe/c\”TITLERemovingSVNFoldersin%1&&COLOR9A&&FOR/r\”%1\”%%fIN(.svn)DORD/s/q\”%%f\”\”“将这段代码保存为一个.reg文件,双击确认导入注册表即可。

从服务器端彻底删除SVN版本库中部分文件夹或文件夹

若要彻底删除SVN版本库某一文件夹或文件,可采取这种方法(举例说明):

例:假设SVN库路径为E:\svn\project,库中的目录结构为

QA/Trunk

Software/Tags/test.exe

删除Software/Tags/目录下的test.exe文件

操作步骤为:

把SVN库dump出来

使用svndumpfilter过滤掉要删除的文件

新建一个SVN库

再将处理好的文件load到新的SVN库里

具体命令为:

>svnadmindumpE:\svn\project>aaa.dump
>typeaaa.dump|svndumpfilterexclude/Software/Tags/test.exe>bbb.dump
>svnadmincreateE:\svn\project_new
>svnadminloadE:\svn\project_new

然后再将新建的project_new重命名为project,以前的project可以移走,或是另取一个名称.(因为在TRAC中使用的SVN目录是project,用户所使用的SVN目录也是project)

此方法在SVN库里版本不多的情况下完全可以达到彻底删除SVN版本库某一文件夹或文件的效果,但是如果SVN库里的版本过多,在dump版本的时候会因存储空间不足,而无法dump版本.也就无法操作了.这时须另挂能满足其存储空间的硬盘操作.