"Shawn O. Pearce" [off-list ref] writes:
To keep things really simple in git-blame we require that the new
--gui option be the first argument on the command line, and cannot
be combined with any other option. If it is the first argument
then we punt our entire command line as-is into `git gui blame`,
where that program's option parser will handle selecting out the
revision and path, if present.
Its simple and not very intrusive, but has the odd behavior that
no option (like --contents) can be used along with it, because
git-gui's own blame subcommand doesn't recognize them. On the
other hand it is a useful DWIMery for `git gui blame`.
Hmm. Now, how does "git-blame" tell if there is usable git-gui
installed with it? Will we have "git-gui --list-features"?
In either case, I think this description is far less than optimum:
quoted hunk
diff --git a/Documentation/git-blame.txt b/Documentation/git-blame.txt
index 66f1203..96ff02d 100644
--- a/Documentation/git-blame.txt
+++ b/Documentation/git-blame.txt
@@ -10,6 +10,7 @@ SYNOPSIS
[verse]
'git-blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m]
[-S <revs-file>] [-M] [-C] [-C] [--since=<date>]
+ [--gui]
[<rev> | --contents <file>] [--] <file>
It essentially is two commands with different calling
conventions. I would probably do this instead if I were doing
this:
SYNOPSIS
--------
[verse]
'git-blame' [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-p] [-w] [--incremental] [-L n,m]
[-S <revs-file>] [-M] [-C] [-C] [--since=<date>]
[<rev> | --contents <file>] [--] <file>
'git-blame' --gui [<rev>] [--] <file>