2006-03-08 21:42:24 -04:00
|
|
|
#! /usr/bin/env python
|
|
|
|
|
|
|
|
"""
|
|
|
|
SVN helper script.
|
|
|
|
|
2006-03-08 21:59:27 -04:00
|
|
|
Try to set the svn:eol-style property to "native" on every .py, .txt, .c and
|
|
|
|
.h file in the directory tree rooted at the current directory.
|
2006-03-08 21:42:24 -04:00
|
|
|
|
|
|
|
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
|
2006-03-08 21:59:27 -04:00
|
|
|
command-line operation for every file with the right extension.
|
2006-03-08 21:42:24 -04:00
|
|
|
"""
|
|
|
|
|
2006-03-08 21:59:27 -04:00
|
|
|
import re
|
2006-03-08 21:42:24 -04:00
|
|
|
import os
|
|
|
|
|
2006-03-08 21:59:27 -04:00
|
|
|
possible_text_file = re.compile(r"\.([hc]|py|txt)$").search
|
|
|
|
|
2006-03-08 21:42:24 -04:00
|
|
|
for root, dirs, files in os.walk('.'):
|
|
|
|
if '.svn' in dirs:
|
|
|
|
dirs.remove('.svn')
|
|
|
|
for fn in files:
|
2006-03-08 21:59:27 -04:00
|
|
|
if possible_text_file(fn):
|
2006-03-08 21:42:24 -04:00
|
|
|
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)
|