]> thyrsus.com Git - src.git/commitdiff
Make tag and branch keys list deterministically.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 23:24:28 +0000 (18:24 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 12 Nov 2014 23:24:28 +0000 (18:24 -0500)
src

diff --git a/src b/src
index 6d92790ccf43e0926a00e0fb42a85fa6835452e1..89e8e55552c2283996c059d689d29e38026ce2cf 100755 (executable)
--- a/src
+++ b/src
@@ -254,7 +254,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."
@@ -761,18 +761,24 @@ def tag_helper(args, legend, validation_hook, delete_method, set_method):
             width = screenwidth()
             for arg in ctx.args:
                 metadata = History(arg)
-                sys.stdout.write("= %s %s\n" % (arg, ((width - len(arg) - 5) * "=")))
-                if legend == "branch":
-                    sys.stdout.write("   0\t%s\n" % metadata.branch)
-                for (key, value) in list(metadata.symbols.items()):
+                sys.stdout.write("= %s %s\n" \
+                                 % (arg, ((width - len(arg) - 5) * "=")))
+                keys = metadata.symbols.keys()
+                if metadata.branch in keys:
+                    keys.remove(metadata.branch)
+                    keys = [metadata.branch] + keys
+                for key in keys:
+                    value = metadata.symbols[key]
                     if legend == "branch":
-                        if key == metadata.branch:
-                            continue
                         display = backend.branch_to_base(value)
+                        if not display:
+                            display = 0
+                        else:
+                            display = metadata.native_to_revno(display)
                     else:
-                        display = value
+                        display = metadata.native_to_revno(value)
                     if metadata.isbranch(value) == (legend == "branch"):
-                        sys.stdout.write("%4d\t%s\n" % (metadata.native_to_revno(display),key))
+                        sys.stdout.write("%4s\t%s\n" % (display,key))
             return
         if args[0] in ("-r", "rename"):
             args.pop(0)
@@ -1140,6 +1146,7 @@ class RCS:
         do_or_die("rcs -q -u {0},v".format(arg))
     def parse(self, metadata):
         "Get and parse the RCS log output for this file."
+        metadata.symbols["trunk"] = "0.1"
         with popen_or_die("cd %s >/dev/null; rlog %s 2>/dev/null; cd ..>/dev/null" % (repodir, metadata.name)) as fp:
             if debug >= DEBUG_PARSE:
                 sys.stderr.write("\t-> init\n")