Skip to content

Commit a443fb4

Browse files
author
martin.v.loewis
committed
Conservatively restrict support to format 8 repositories.
git-svn-id: http://svn.python.org/projects/python/trunk@64265 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 7b5200b commit a443fb4

1 file changed

Lines changed: 36 additions & 34 deletions

File tree

Tools/scripts/svneol.py

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -33,48 +33,50 @@
3333
import re
3434
import os
3535

36-
def propfile(root, fn):
36+
def propfiles(root, fn):
3737
default = os.path.join(root, ".svn", "props", fn+".svn-work")
3838
try:
3939
format = int(open(os.path.join(root, ".svn", "format")).read().strip())
4040
except IOError:
41-
return default
42-
# XXX I don't know what version uses what format;
43-
# this condition is just anecdotal
44-
if format >= 8:
45-
return os.path.join(root, ".svn", "prop-base", fn+".svn-base")
46-
return default
41+
return []
42+
if format == 8:
43+
# In version 8, committed props are stored in prop-base,
44+
# local modifications in props
45+
return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
46+
os.path.join(root, ".svn", "props", fn+".svn-work")]
47+
raise ValueError, "Unknown repository format"
4748

4849
def proplist(root, fn):
4950
"Return a list of property names for file fn in directory root"
50-
path = propfile(root, fn)
51-
try:
52-
f = open(path)
53-
except IOError:
54-
# no properties file: not under version control
55-
return []
5651
result = []
57-
while 1:
58-
# key-value pairs, of the form
59-
# K <length>
60-
# <keyname>NL
61-
# V length
62-
# <value>NL
63-
# END
64-
line = f.readline()
65-
if line.startswith("END"):
66-
break
67-
assert line.startswith("K ")
68-
L = int(line.split()[1])
69-
key = f.read(L)
70-
result.append(key)
71-
f.readline()
72-
line = f.readline()
73-
assert line.startswith("V ")
74-
L = int(line.split()[1])
75-
value = f.read(L)
76-
f.readline()
77-
f.close()
52+
for path in propfiles(root, fn):
53+
try:
54+
f = open(path)
55+
except IOError:
56+
# no properties file: not under version control,
57+
# or no properties set
58+
continue
59+
while 1:
60+
# key-value pairs, of the form
61+
# K <length>
62+
# <keyname>NL
63+
# V length
64+
# <value>NL
65+
# END
66+
line = f.readline()
67+
if line.startswith("END"):
68+
break
69+
assert line.startswith("K ")
70+
L = int(line.split()[1])
71+
key = f.read(L)
72+
result.append(key)
73+
f.readline()
74+
line = f.readline()
75+
assert line.startswith("V ")
76+
L = int(line.split()[1])
77+
value = f.read(L)
78+
f.readline()
79+
f.close()
7880
return result
7981

8082
possible_text_file = re.compile(r"\.([hc]|py|txt|sln|vcproj)$").search

0 commit comments

Comments
 (0)