正在加载...

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更注重原创、时效性好的文章:



本文相关评论: 才 32 条评论
  1. 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也很容易啊,完全谈不上“危险”:)

  2. 巫山霏云 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 10:06:29

        export不需要网络

        • aw 2008-11-17 10:27:22

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

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

          • MArCo 2008-11-21 03:06:55

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

            (评论已经达到最大深度!)
  3. fnsoxt 2008-11-17 01:13:06

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

  4. 老所 2008-11-17 01:58:07

    还是用export保险:)

  5. 天机不可泄漏 2008-11-17 02:04:49

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

  6. 大头阿当 2008-11-17 02:45:55

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

    • aw 2008-11-17 03:23:11

      Linux is really easy:)

      • 大头阿当 2008-11-17 05: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 04:31:30

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

        • 刘金雨 2009-01-15 09:40:50

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

    • aw 2008-11-17 04:30:12

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

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

  7. wc 2008-11-17 05:42:05

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

    • aw 2008-11-17 05:44:21

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

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

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

  9. idisole 2008-11-19 06:11:26

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

  10. Dofy 2008-11-21 09:04:14

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

  11. 2121 2009-05-27 11:03:51

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

  12. vegetabke_king 2009-06-24 11:32:15

    very good! thanks!

  13. cs 2009-07-27 09:50:12

    ding!!!!!!!!!!!!!!!!!

  14. g 2009-08-17 04:53:05

    很好用,谢谢

  15. 枫叶 2010-08-06 10:33:21

    我个人认为是目前最简单的方法了,而且方便。

  16. leo 2011-03-09 03:14:41

    window下吧?资源管理器Ctrl F,在查找出的结果列表里操作就行了。也不是太麻烦~~

  17. AJ阿杰 2011-08-28 02:29:10

    这方法很有效,谢谢博主

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