隐士以前用惯了ClearCase,换到SVN有点不习惯。ClearCase下面的文件都可以直接Copy出来用,SVN下面的就麻烦了,每个目录下面一个.svn子目录,当你要把项目在Check In前拿去别用时,你就体会到你的项目不是一个项目,此刻SVN灵魂附体令你感觉别扭,当然,Check In后可以用SVN的Export来导出一个干净的项目。不爽,隐士整了个Python脚本,清除这些垃圾。
闲话不多,看脚本:
# !/usr/bin/python # -*- coding: utf8 -*- # ################################ # Written by caocao # # http://www.caocao.mobi # # http://www.caocao.name # # ################################ import sys, os, stat def walk(path): for item in os.listdir(path): subpath = os.path.join(path, item) mode = os.stat(subpath)[stat.ST_MODE] if stat.S_ISDIR(mode): if item == " .svn " : print " Cleaning %s ... " % subpath print " %d deleted " % purge(subpath) else : walk(subpath) 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 if len(sys.argv) != 2 : print " Usage: python SVNClean.py path " sys.exit( 1 ) walk(sys.argv[ 1 ])