]> thyrsus.com Git - src.git/commitdiff
Make "--" do the right thing in pramble, and document it.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 7 Nov 2014 11:40:06 +0000 (06:40 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 7 Nov 2014 11:40:06 +0000 (06:40 -0500)
src
src.asc

diff --git a/src b/src
index 558b1fb97d1e1f176b8b42c468aa9253b1342931..977cb60e040de9449d7e730efacc596bf1a9a389 100755 (executable)
--- a/src
+++ b/src
@@ -205,6 +205,11 @@ def help_method(*args):
     "Summarize src commands, or (with argument) show help for a single command."
     print"""
 A revision-spec can be a 1-origin revno or a pair of them separated by '-'.
+Revisions can be designated by named tags
+
+The token "--" tells the command-line interpreter that revision-specs
+ad subcommands are done - everything after it is a filename, even
+if it looks like a subcommand or revision number.
 
 src help [command]
    Displays help for commands.
@@ -265,28 +270,31 @@ def preamble(cmd, args):
     "Common setup code."
     args = list(args)
     revspec = None
-    if args and args[0].isdigit():
-        revspec = args.pop(0)
-        try:
-            if "-" in revspec:
-                (start, end) = revspec.split("-")
-                try:
-                    start = int(start)
-                except ValueError:
-                    pass
-                try:
-                    end = int(end)
-                except ValueError:
-                    pass
-            else:
-                try:
-                    start = int(revspec)
-                except ValueError:
-                    pass
-                end = start
-        except ValueError:
-            croak("malformed revision spec: %s" % revspec)
-        revspec = (start, end)
+    if args:
+        if args[0] == "--":
+            args.pop(0)
+        elif args[0].isdigit():
+            revspec = args.pop(0)
+            try:
+                if "-" in revspec:
+                    (start, end) = revspec.split("-")
+                    try:
+                        start = int(start)
+                    except ValueError:
+                        pass
+                    try:
+                        end = int(end)
+                    except ValueError:
+                        pass
+                else:
+                    try:
+                        start = int(revspec)
+                    except ValueError:
+                        pass
+                    end = start
+            except ValueError:
+                croak("malformed revision spec: %s" % revspec)
+            revspec = (start, end)
     if not args:
         masters = os.listdir(".src")
         if len(masters) == 1:
diff --git a/src.asc b/src.asc
index c892d082617f821c688be9d3cb621745c0fa038e..f105ed491bcb86490a18e7c1e26003b2f70248e7 100644 (file)
--- a/src.asc
+++ b/src.asc
@@ -29,7 +29,11 @@ an editor instance when you perform a commit.
 A revision spec is a 1-origin integer N, or a range literal M..N.
 Revisions can be designated by named tags
 
-src help [command]
+The token "--" tells the command-line interpreter that revision-specs
+ad subcommands are done - everything after it is a filename, even
+if it looks like a subcommand or revision number.
+
+src help [command]::
    Displays help for commands.
 
 src init::