python-2.5.2/win32/Tools/Scripts/svneol.py
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/Tools/Scripts/svneol.py	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,77 @@
+#! /usr/bin/env python
+
+"""
+SVN helper script.
+
+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.
+
+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
+"""
+
+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|sln|vcproj)$").search
+
+for root, dirs, files in os.walk('.'):
+    if '.svn' in dirs:
+        dirs.remove('.svn')
+    for fn in files:
+        if possible_text_file(fn):
+            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)