[收集]删除.SVN文件夹方法列表

  Subversion的源代码管理客户端会在你的项目中新建一些名为.svn的隐藏文件夹来保存本地状态。如果你想复制或共享项目目录,这时这些.svn文件就可能成为问题,下面收集了一些方法可使用。

1、注册表法:
建立一个文本文件,取名为DeleteSVNFolders.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 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

  此REG文件为文件夹添加了一个“删除SVN的文件夹”的右键上下文菜单。当你选择它,它会删除所有名为.svn的文件夹和它们下面的文件。(如果该项目没有在Subversion源代码控制,那它什么也不做)。

  把这个reg文件并合并进入注册表后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件夹了。

当然要删除这个菜单也很简单,使用下面的注册表文件即可:
程序代码 程序代码
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]


2、python脚本法
程序代码 程序代码
import os, stat;

root_dir = r'X:\Project\XX';

def purge(path):
     count = 0;
    for item in os.listdir(path):
         subpath = os.path.join(path, item);
         mode = os.stat(subpath)[stat.ST_MODE];
        if stat.S_ISDIR(mode):
             count += purge(subpath);
        else:
             os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE);
             os.unlink(subpath);
             count += 1;
     os.rmdir(path);
     count += 1;
    return count;

def callback(arg, directory, files):
    if os.path.split(directory)[1]=='.svn':
        print directory;
        #使用os.removedirs()是删不掉的
        print "Folder [%s](%d files) deleted." % (directory, purge(directory));
        print '--------------------';

if __name__=='__main__':
    print 'start';
     os.path.walk(root_dir, callback, 0);
    print 'complete.';


3、shell命令
linux shell:
程序代码 程序代码
find . -type f -iname ".svn" -exec rm -rf {} \;

windows shell:
在项目平级的目录,执行dos命令:
程序代码 程序代码
xcopy project_dir project_dir_1 /s /i

在项目根目录执行以下dos命令
程序代码 程序代码
for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn"


  其实稍熟悉一点SVN使用的人都知道SVN有一个EXPORT命令的,为什么我们还要整上面这些东西呐?项目经历多了就会发现,很多时候我们项目内部并没有把所有的文件纳入SVN管理,在我经历的项目中,主要是变动特别频繁的WEB项目,总是或多或少有些资源文件没有纳入SVN管理。

参考:
http://onlypython.group.javaeye.com/group/blog/53926
http://hi.baidu.com/primechen/blog/item/c241913831f59cf93b87cef0.html


[本日志由 Yoker 于 2010-07-12 08:01 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: SVN Python Shell
评论: 0 | 引用: 0 | 查看次数: 34
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭