正在加载...

SVN是我认为目前最方便的版本管理体系。我最早一次接触版本管理是2004年,当时学校BBS的代码要求用CVS管理;第二次亲密接触是在2006年,当时公司的代码使用Eclipse+CVS管理;而第一次使用SVN则是在2007年的一个封闭开发项目。

我十分喜欢SVN的方便,无论是在Linux下的命令行操作还是在Windows下的资源管理器插件,都十分简易。而且code.google.com也支持SVN来供我们发布、维护开源项目(例如我的WordPress主题TES)然而,久而久之,SVN文件夹下会有许多.svn的“meta数据”。这些数据久而久之会带来不少麻烦。尤其是基于资源管理器交互的Windows系统。

今天看了Jon Galloway的一个注册表脚本,十分方便,分享如下:

建立一个文本文件,取名为kill-svn-folders.reg(扩展名由txt改为reg),内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了:

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:



本文相关评论: 才 27 条评论
( 展开所有评论 | 收起所有评论 ) 立刻发表评论 »
Jason Cui 2008-11-17 10:15:34

这操作太危险了。如果你的项目还有没commit的文件,结果一不小心.svn被删了,那就完了!

lvdaocn 2008-11-17 10:22:28

一般都有备份的吧…

aw 2008-11-17 10:41:07

1、删除.svn文件夹的目的就是要脱离svn控制。
2、即便没有commit,再次commit也很容易啊,完全谈不上“危险”:)

巫山霏云 2008-11-17 11:42:17

其实你要删除.svn的话,还不如导出的说…
从版本库导出干净的副本,这样就摆脱了SVN的文件夹控制了~~~不包括.svn

aw 2008-11-17 12:08:42

export的方法很久前就有人提过了:)

我说的是对现有的.svn文件进行“抛弃版本控制”的操作。举个简单的例子:

你周末从svn更新了一些code,但周一的时候网络突然坏掉了,这时候你没有办法export,但有需要有一份干净的code,就可以用这个方法了。

joyqi 2008-11-17 22:06:29

export不需要网络

aw 2008-11-17 22:27:22

恩,有.svn的时候的确是可以export的,下面有一个gif

不过export依赖于SVN的客户端环境,因此Jon Galloway的方法也并非完全没有用处:)

MArCo 2008-11-21 15:06:55

确实,如果没有客户端支持的话,删除.svn的方法确实比较直接。
不过,难道这个方法真的比F3“.svn”更简单么…………

fnsoxt 2008-11-17 13:13:06

?????????????export是可以从本地版本库中取出的

老所 2008-11-17 13:58:07

还是用export保险:)

天机不可泄漏 2008-11-17 14:04:49

不错的办法,
我一般都是直接搜索“.svn”,然后全部删除

大头阿当 2008-11-17 14:45:55

for i in `find . | grep -e “\.svn”`; do
rm -rf $i;
done;

aw 2008-11-17 15:23:11

Linux is really easy:)

大头阿当 2008-11-17 17:47:51

Hello, I have been watching your blog for quite a long time. You are a good man.
I sent you an invitation on Linkedin, would you please take it on?

大头阿当 2008-11-18 16:31:30

这个指令的正确形式恐怕是下面这样的,Linux管道用多了总有一些坏毛病,呵呵,见谅见谅。
find . -name “.svn” –exec rm -rf {} \

刘金雨 2009-01-15 21:40:50

我总觉得,find是linux里面最不符合常规逻辑的几个命令之一

星辉一冷 2008-11-17 16:27:13
aw 2008-11-17 16:30:12

这个方法果然不错……多谢!

不过也必须借助于客户端环境。如果是别人发给你的含有.svn文件夹的svn代码,但你又没客户端环境,就只能用我文章里的方法了:)

wc 2008-11-17 17:42:05

照做了一下,结果目录下所有文件都被删除了,呜呜,
幸亏只是找了个不用的目录做测试,太危险了,还是自己手工删除比较保险。

aw 2008-11-17 17:44:21

怎么可能?你确认操作的过程和我的文章是一样的?

Jerry Qu 2008-11-18 12:48:09

这个很赞!SVN和CVS都在用,这个方法改一下应该也可以用在删除CVS文件夹上,不过CVS文件夹前面没有点,容易误伤。

idisole 2008-11-19 18:11:26

回头试试,单位的电脑装的SVN用不上了

Dofy 2008-11-21 21:04:14

查找 .svn 文件夹删除就行了, 用 Everything 搜更是爽得没话说 :D

aw 2008-11-21 21:09:09

Everything? 没听说过,介绍下?:)

2121 2009-05-27 11:03:51

非常非常好的方法,谢谢了~

vegetabke_king 2009-06-24 11:32:15

very good! thanks!

[支持Ctrl+Enter]
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍