return svn_keywords_re[s]
# Parse the unhandled log.
-def _do_parse_unhandled(f, lastrev=None):
- # Compile the regular expressions we'll be using here.
- re_rev = re.compile("^r(\d+)$")
- re_keywords = re.compile("^\s+[-+]file_prop: (\S+) svn:keywords ?(\S*)$")
-
+def _do_parse_unhandled(directory, lastrev=None):
+ base = os.path.join(directory)
rev = None
- for line in f:
- m = re_rev.match(line)
- if m:
- rev = m.group(1)
- continue
-
- if (lastrev >= int(rev)):
- continue
-
- m = re_keywords.match(line)
- if m:
- path = urllib.unquote(m.group(1))
- keywords = set(urllib.unquote(m.group(2)).split(' '))
- if not FILES.has_section(path):
- FILES.add_section(path)
- FILES.set(path, rev, keywords)
-
- lastrev = max(int(rev), lastrev)
+ for d in os.listdir(base):
+ subent = os.path.join(base, d)
+ if (d == 'unhandled.log' and os.path.isfile(subent)):
+ with open(subent, 'r') as f:
+ # Compile the regular expressions we'll be using here.
+ re_rev = re.compile("^r(\d+)$")
+ re_keywords = re.compile("^\s+[-+]file_prop: (\S+) svn:keywords ?(\S*)$")
+
+ for line in f:
+ m = re_rev.match(line)
+ if m:
+ rev = m.group(1)
+ continue
+
+ if (lastrev >= int(rev)):
+ continue
+
+ m = re_keywords.match(line)
+ if m:
+ path = urllib.unquote(m.group(1))
+ keywords = set(urllib.unquote(m.group(2)).split(' '))
+ if not FILES.has_section(path):
+ FILES.add_section(path)
+ FILES.set(path, rev, keywords)
+ elif (os.path.isdir(subent)):
+ _do_parse_unhandled(subent, lastrev=lastrev)
+
+ if rev:
+ lastrev = max(int(rev), lastrev)
CONFIG.set('core', 'lastrev', lastrev)
CONFIG.set('core', 'version', VERSION)
if CONFIG.has_option('core', 'lastrev'):
lastrev = CONFIG.getint('core', 'lastrev')
- for remote in ['svn', 'svn/refs/remotes']:
- base = os.path.join(g.path,remote)
- for d in os.listdir(base):
- if os.path.isdir(os.path.join(base,d)):
- unhandled = os.path.join(base,d,'unhandled.log')
- if os.path.isfile(unhandled):
- with open(unhandled, 'r') as f:
- _do_parse_unhandled(f, lastrev=lastrev)
+ _do_parse_unhandled(os.path.join(g.path, 'svn'), lastrev=lastrev)
with open(FILES_PATH, 'wb') as f:
FILES.write(f)