Simple utility to add svn:eol-style to text files under

SVN control.  Like reindent.py, I expect to run this
mindlessly from time to time, checking in whatever it
happens to do ;-)
This commit is contained in:
Tim Peters 2006-03-09 01:42:24 +00:00
parent 685e954935
commit d87f81f5f3
1 changed files with 48 additions and 0 deletions

48
Tools/scripts/svneol.py Normal file
View File

@ -0,0 +1,48 @@
#! /usr/bin/env python
"""
SVN helper script.
Try to set the svn:eol-style property to "native" on every .py and .txt file
in the directory tree rooted at the current directory.
Files with the svn:eol-style property already set (to anything) are skipped.
svn will itself refuse to set this property on a file that's not under SVN
control, or that has a binary mime-type property set. This script inherits
that behavior, and passes on whatever warning message the failing "svn
propset" command produces.
In the Python project, it's safe to invoke this script from the root of
a checkout.
No output is produced for files that are ignored. For a file that gets
svn:eol-style set, output looks like:
property 'svn:eol-style' set on 'Lib\ctypes\__init__.py'
For a file not under version control:
svn: warning: 'patch-finalizer.txt' is not under version control
and for a file with a binary mime-type property:
svn: File 'Lib\test\test_pep263.py' has binary mime type property
TODO: This is slow, and especially on Windows, because it invokes a new svn
command-line operation for every .py and .txt file.
"""
import os
for root, dirs, files in os.walk('.'):
if '.svn' in dirs:
dirs.remove('.svn')
for fn in files:
if fn.endswith('.py') or fn.endswith('.txt'):
path = os.path.join(root, fn)
p = os.popen('svn proplist "%s"' % path)
guts = p.read()
p.close()
if 'eol-style' not in guts:
os.system('svn propset svn:eol-style native "%s"' % path)