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
}
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)
{