[收集]删除.SVN文件夹方法列表
作者:Yoker 日期:2010-07-12
Subversion的源代码管理客户端会在你的项目中新建一些名为.svn的隐藏文件夹来保存本地状态。如果你想复制或共享项目目录,这时这些.svn文件就可能成为问题,下面收集了一些方法可使用。
1、注册表法:
建立一个文本文件,取名为DeleteSVNFolders.reg,内容如下:
程序代码
此REG文件为文件夹添加了一个“删除SVN的文件夹”的右键上下文菜单。当你选择它,它会删除所有名为.svn的文件夹和它们下面的文件。(如果该项目没有在Subversion源代码控制,那它什么也不做)。
把这个reg文件并合并进入注册表后,在每一个文件夹上点击右键都会有一个“Delete SVN Folders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件夹了。

当然要删除这个菜单也很简单,使用下面的注册表文件即可:
程序代码
2、python脚本法
程序代码
3、shell命令
linux shell:
程序代码
windows shell:
在项目平级的目录,执行dos命令:
程序代码
在项目根目录执行以下dos命令
程序代码
其实稍熟悉一点SVN使用的人都知道SVN有一个EXPORT命令的,为什么我们还要整上面这些东西呐?项目经历多了就会发现,很多时候我们项目内部并没有把所有的文件纳入SVN管理,在我经历的项目中,主要是变动特别频繁的WEB项目,总是或多或少有些资源文件没有纳入SVN管理。
参考:
http://onlypython.group.javaeye.com/group/blog/53926
http://hi.baidu.com/primechen/blog/item/c241913831f59cf93b87cef0.html
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\" \""
[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]
[-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.';
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
评论: 0 | 引用: 0 | 查看次数: 34
发表评论
上一篇
下一篇

文章来自:
Tags: 