diff --git a/Tools/scripts/svneol.py b/Tools/scripts/svneol.py index 5864cdcfb48..9e57bb4c0f8 100644 --- a/Tools/scripts/svneol.py +++ b/Tools/scripts/svneol.py @@ -33,48 +33,50 @@ and for a file with a binary mime-type property: 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 - # NL - # V length - # 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 + # NL + # V length + # 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