隐士以前用惯了ClearCase,换到SVN有点不习惯。ClearCase下面的文件都可以直接Copy出来用,SVN下面的就麻烦了,每个目录下面一个.svn子目录,当你要把项目在Check In前拿去别用时,你就体会到你的项目不是一个项目,此刻SVN灵魂附体令你感觉别扭,当然,Check In后可以用SVN的Export来导出一个干净的项目。不爽,隐士整了个Python脚本,清除这些垃圾。
闲话不多,看脚本:
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])