I had mistakenly checked in .pyc files into svn, So I took this approach of deleting all the .pyc files in the current working copy directory tree and then using svn remove to the remove from the repository. The following is the snippet I wrote then to for the purpose.
Python, 31 lines
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
# Remove .pyc files from svn from the current directory tree. import os import subprocess # Delete the files first. for dirpath, dirnames, filenames in os.walk(os.getcwd()): for each_file in filenames: if each_file.endswith('.pyc'): if os.path.exists(os.path.join(dirpath, each_file)): os.remove(os.path.join(dirpath, each_file)) # Now, get the svn status and remove the deleted files. cout, cerr = subprocess.Popen('svn status .', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() files = cout.split('\n') output =  for fname in files: if fname.startswith('!'): output.append(fname.strip('!').strip()) for each in output: try: os.system('svn remove ' + each) except Exception, e: print e
Why not just run this command ?
edit ~/.subversion/config, uncomment global-ignores line and add *.pyc :-)
I'm one who would find this program useful. First, I'm on Windows so there's no 'find' command. Secondly, when I've got several projects I'm working on and I want svn to ignore different extensions for different projects, I can't do it by editing .subversion/config, which tells it to ignore extensions globally. Subversion is not as configurable as it needs to be. You should be able to tell svn on a project by project basis which file extensions to ignore AND have this apply to ALL people who do updates/commits on the project.
Might look at svn:ignore property it allows you to do want you want on a per project basis.