From: Eric S. Raymond Date: Mon, 10 Nov 2014 19:11:57 +0000 (-0500) Subject: It breaks when listing branches, but I know why. X-Git-Tag: 0.4~9 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=8b363b8d3e715c8b244e989906a40129d834401c;p=src.git It breaks when listing branches, but I know why. --- diff --git a/src b/src index 1d54bd3..0de1716 100755 --- a/src +++ b/src @@ -174,7 +174,7 @@ class History: croak("{0} has no revno {1}".format(self.name, revno)) def isbranch(self, symbol): "Is this a branch symbol?" - return ".0." in symbol + return ".0" in symbol def help_method(*args): "Summarize src commands, or (with argument) show help for a single command." @@ -641,9 +641,9 @@ def tag_helper(args, legend, validation_hook, delete_method, set_method): if legend == "branch": sys.stdout.write("%s\n" % metadata.branch) for (key, value) in metadata.symbols.items(): - if legend == "branch" and key == branch.metadata: + if legend == "branch" and key == metadata.branch: continue - if metadata.isbranch(arg) == (legend == "branch"): + if metadata.isbranch(value) == (legend == "branch"): sys.stdout.write("%4d\t%s\n" % (metadata.rcs_to_revno(value),key)) return if args[0] in ("-r", "rename"): @@ -982,10 +982,9 @@ class RCS: sys.stderr.write("\t-> symbols\n") state = "symbols" elif line.startswith("branch:"): - if not line.strip()[7:]: + branch = line.split(":")[1].strip() + if not branch: metadata.branch = "trunk" - else: - croak("non-trunk branches are not yet supported.") elif line.startswith("----------------------------"): if debug >= DEBUG_PARSE: sys.stderr.write("\t-> logheader\n") @@ -1037,6 +1036,14 @@ class RCS: break elif metadata.revlist: metadata.revlist[-1].log += line + # Now that we have the symbol table... + if metadata.branch != "trunk": + for (k, v) in metadata.symbols.items(): + if v == metadata.branch: + metadata.branch = k + break + else: + croak("unrecognized branch ID '%s'" % branch) for item in metadata.revlist: item.revno = maxrevno - item.revno if debug >= DEBUG_PARSE: