Commit 9c1990b8 authored by Guido van Rossum's avatar Guido van Rossum

Use regular expressions for branch matching, to avoid including

changes on a sub-branch into output for a given branch.
parent c3e6ef31
...@@ -33,7 +33,7 @@ from their output. ...@@ -33,7 +33,7 @@ from their output.
""" """
import os, sys, getopt import os, sys, getopt, re
sep1 = '='*77 + '\n' # file separator sep1 = '='*77 + '\n' # file separator
sep2 = '-'*28 + '\n' # revision separator sep2 = '-'*28 + '\n' # revision separator
...@@ -100,7 +100,11 @@ def digest_chunk(chunk, branch=None): ...@@ -100,7 +100,11 @@ def digest_chunk(chunk, branch=None):
break break
else: else:
working_file = None working_file = None
if branch and branch != "HEAD": if branch is None:
pass
elif branch == "HEAD":
branch = re.compile(r"^\d+\.\d+$")
else:
revisions = {} revisions = {}
key = 'symbolic names:\n' key = 'symbolic names:\n'
found = 0 found = 0
...@@ -116,10 +120,11 @@ def digest_chunk(chunk, branch=None): ...@@ -116,10 +120,11 @@ def digest_chunk(chunk, branch=None):
else: else:
found = 0 found = 0
rev = revisions.get(branch) rev = revisions.get(branch)
branch = re.compile(r"^<>$") # <> to force a mismatch by default
if rev: if rev:
if rev.find('.0.') >= 0: if rev.find('.0.') >= 0:
rev = rev.replace('.0.', '.') + '.' rev = rev.replace('.0.', '.')
branch = rev or "<>" # <> to force a mismatch branch = re.compile(r"^" + re.escape(rev) + r"\.\d+$")
records = [] records = []
for lines in chunk[1:]: for lines in chunk[1:]:
revline = lines[0] revline = lines[0]
...@@ -144,13 +149,11 @@ def digest_chunk(chunk, branch=None): ...@@ -144,13 +149,11 @@ def digest_chunk(chunk, branch=None):
if len(words) >= 2 and words[0] == 'revision': if len(words) >= 2 and words[0] == 'revision':
rev = words[1] rev = words[1]
else: else:
# No 'revision' line -- weird...
rev = None rev = None
text.insert(0, revline) text.insert(0, revline)
if branch: if branch:
if branch == "HEAD": if rev is None or not branch.match(rev):
if rev is not None and rev.count('.') > 1:
continue
elif rev is None or not rev.startswith(branch):
continue continue
records.append((date, working_file, rev, author, text)) records.append((date, working_file, rev, author, text))
return records return records
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment