diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2006-03-09 02:20:05 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2006-03-09 02:20:05 (GMT) |
commit | 8ff212034e3386916f1a35ff3b0c955aa1ea2b4a (patch) | |
tree | 30c4916e64c22615ddd0dca8a4e781783bb7ce72 /Tools/scripts | |
parent | 84457af29e53eb7e0c12b3f4dcd6b6070048c17f (diff) | |
download | cpython-8ff212034e3386916f1a35ff3b0c955aa1ea2b4a.zip cpython-8ff212034e3386916f1a35ff3b0c955aa1ea2b4a.tar.gz cpython-8ff212034e3386916f1a35ff3b0c955aa1ea2b4a.tar.bz2 |
Directly read working copy data to obtain list of properties.
Diffstat (limited to 'Tools/scripts')
-rw-r--r-- | Tools/scripts/svneol.py | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/Tools/scripts/svneol.py b/Tools/scripts/svneol.py index 9bab175..d82b69f 100644 --- a/Tools/scripts/svneol.py +++ b/Tools/scripts/svneol.py @@ -28,14 +28,43 @@ For a file 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 file with the right extension. """ import re import os +def proplist(root, fn): + "Return a list of property names for file fn in directory root" + path = os.path.join(root, ".svn", "props", fn+".svn-work") + try: + f = open(path) + except IOError: + # no properties file: not under version control + return [] + result = [] + while 1: + # key-value pairs, of the form + # K <length> + # <keyname>NL + # V length + # <value>NL + # END + line = f.readline() + if line.startswith("END"): + break + assert line.startswith("K ") + L = int(line.split()[1]) + key = f.read(L) + result.append(key) + f.readline() + line = f.readline() + assert line.startswith("V ") + L = int(line.split()[1]) + value = f.read(L) + f.readline() + f.close() + return result + possible_text_file = re.compile(r"\.([hc]|py|txt)$").search for root, dirs, files in os.walk('.'): @@ -43,9 +72,6 @@ for root, dirs, files in os.walk('.'): dirs.remove('.svn') for fn in files: if possible_text_file(fn): - path = os.path.join(root, fn) - p = os.popen('svn proplist "%s"' % path) - guts = p.read() - p.close() - if 'eol-style' not in guts: + if 'svn:eol-style' not in proplist(root, fn): + path = os.path.join(root, fn) os.system('svn propset svn:eol-style native "%s"' % path) |