#! /usr/bin/python # Remove .svn directories from a directory tree; only tested under Windows (but might work under *nix) # Usage: # desvn.py --> GUI directory selector # desvn.py dir1 dir2 ... dir n --> removes .svn directories from dir1 tree, dir2 tree, etc import Tkinter, tkFileDialog, os, shutil, os.path, sys, stat # get list of directories to remove .svn subdirectories if len(sys.argv) == 1: root = Tkinter.Tk() dirList = [tkFileDialog.askdirectory(parent=root, initialdir="/",title='Please select Directory:', mustexist=1)] root.destroy() else: dirList = sys.argv[1:] # now walk the directory tree and remove all .svn directories for treeTop in dirList: for dir, subdir, files in os.walk(treeTop, True): if os.path.basename(dir) == ".svn": # remove any read-only attributes from the .svn directory tree for svnDir, svnSubs, svnFiles in os.walk(dir, True): os.chmod(svnDir, stat.S_IREAD | stat.S_IWRITE) for filePath in svnFiles: os.chmod(os.path.join(svnDir, filePath), stat.S_IREAD | stat.S_IWRITE) # remove .svn directory tree shutil.rmtree(dir) subdir = [] print 'Removed %s' % (dir)