Allow -<number> for OLD.
authorGerd Moellmann <gerd@gnu.org>
Wed, 5 Sep 2001 08:02:18 +0000 (08:02 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 5 Sep 2001 08:02:18 +0000 (08:02 +0000)
admin/revdiff

index bdd6a22..f145da1 100755 (executable)
@@ -27,13 +27,18 @@ if (@ARGV < 3)
 revdiff FILE OLD NEW
     
 Get a diff of FILE between revisions OLD and NEW.  Store the
-diff in a file named FILE-OLD-NEW.diff.  If NEW is +<number>
-or -<number>, build diffs between revisions OLD and OLD +/- <number>.
-OLD being `-' means use FILE's current revision.
+diff in a file named FILE-OLD-NEW.diff.
+
+If OLD is `-' use FILE's current revision for OLD.  If OLD is
+`-<number>', use the Nth revision before the current one for OLD.
+
+If NEW is +<number> or -<number>, build diffs between revisions OLD
+and OLD +/- <number>.
 
 Examples:
 
 revdiff FILE - -1      get the latest change of FILE
+revdiff FILE -1 +1     also gets the latest change of FILE
 revdiff FILE 1.500 +2  get diffs 1.500-1.501 and 1.501-1.502.
 
 USAGE
@@ -73,9 +78,17 @@ sub current_revision ($)
 }
 
 if ($old eq "-")
-{
-  $old = current_revision ($file);
-}
+  {
+    $old = current_revision ($file);
+  }
+elsif ($old =~ /^-(\d+)$/) 
+  {
+    my $offset = $1;
+    $old = current_revision ($file);
+    die "Internal error" unless $old =~ /(.*)\.(\d+)$/;
+    my $minor = $2 - $offset;
+    $old = sprintf ("%d.%d", $1, $minor);
+  }
 
 while (@ARGV) 
   {