关键字: Python SVN
隐士以前用惯了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 ])
# -*- 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 ])