[Python-checkins] r64265 - python/trunk/Tools/scripts/svneol.py

martin.v.loewis python-checkins at python.org
Sat Jun 14 08:24:44 CEST 2008


Author: martin.v.loewis
Date: Sat Jun 14 08:24:44 2008
New Revision: 64265

Log:
Conservatively restrict support to format 8 repositories.


Modified:
   python/trunk/Tools/scripts/svneol.py

Modified: python/trunk/Tools/scripts/svneol.py
==============================================================================
--- python/trunk/Tools/scripts/svneol.py	(original)
+++ python/trunk/Tools/scripts/svneol.py	Sat Jun 14 08:24:44 2008
@@ -33,48 +33,50 @@
 import re
 import os
 
-def propfile(root, fn):
+def propfiles(root, fn):
     default = os.path.join(root, ".svn", "props", fn+".svn-work")
     try:
         format = int(open(os.path.join(root, ".svn", "format")).read().strip())
     except IOError:
-        return default
-    # XXX I don't know what version uses what format;
-    # this condition is just anecdotal
-    if format >= 8:
-        return os.path.join(root, ".svn", "prop-base", fn+".svn-base")
-    return default
+        return []
+    if format == 8:
+        # In version 8, committed props are stored in prop-base,
+        # local modifications in props
+        return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
+                os.path.join(root, ".svn", "props", fn+".svn-work")]
+    raise ValueError, "Unknown repository format"
 
 def proplist(root, fn):
     "Return a list of property names for file fn in directory root"
-    path = propfile(root, fn)
-    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()
+    for path in propfiles(root, fn):
+        try:
+            f = open(path)
+        except IOError:
+            # no properties file: not under version control,
+            # or no properties set
+            continue
+        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


More information about the Python-checkins mailing list