Hi, On Sun, 18 Mar 2007, Robin Rosenberg wrote: > söndag 18 mars 2007 14:16 skrev Raimund Bauer: > > I think it would be really helpful (especially for newbies like me) to > > have an option like > > > > git diff --gui [revisions] <singe path spec> And how do you set _what_ gui you want? Everybody has her pet diff-viewer (mine is less, BTW). > Fine, except it is not likely to be my favourite gui. But you don't have > to wait, you can get a gui easily today. > > [...] > > git diff HEAD^..HEAD | kompare - BTW here, "kompare -" does not work as expected. It shows an empty diff. At any rate, have you tried something like "GIT_PAGER='kompare -' git diff HEAD^..HEAD"? This reminds me that I always wanted to be able to set the pager from the command line, so I can set an alias easily: -- snipsnap -- [PATCH] Allow setting the pager from the command line The command `git` already allows piping the output into a pager with `-p`. Now also allow to set the pager with `-p=<pager-cmd>`. With this, it is possible to make an alias of command/pager combos, like this: $ git config alias.showmore '-p=more show' Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- Documentation/git.txt | 8 +++++--- git.c | 7 ++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Documentation/git.txt b/Documentation/git.txt index 0b1203e..5634b30 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -9,7 +9,7 @@ git - the stupid content tracker SYNOPSIS -------- [verse] -'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate] +'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate][=<pager-cmd>] [-n|--name-rev] [-t|--name-rev-by-tags] [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS] @@ -75,8 +75,10 @@ OPTIONS environment variable. If no path is given 'git' will print the current setting and then exit. --p|--paginate:: - Pipe all output into 'less' (or if set, $PAGER). +-p|--paginate[=<pager-cmd>]:: + Pipe all output into 'less'. You can override this by + "=<pager-cmd>", or setting the environment variables $GIT_PAGER + or $PAGER (in that order). -n|--name-rev: Try naming all SHA1s, and page the result (see diff --git a/git.c b/git.c index fca1dfb..76b126d 100644 --- a/git.c +++ b/git.c @@ -4,7 +4,7 @@ #include "quote.h" const char git_usage_string[] = - "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate] [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS]"; + "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate][=pager_cmd] [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS]"; static void prepend_to_path(const char *dir, int len) { @@ -58,6 +58,11 @@ static int handle_options(const char*** argv, int* argc) } } else if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) { setup_pager(); + } else if (!prefixcmp(cmd, "-p=") || + !prefixcmp(cmd, "--paginate=")) { + const char *equal = strchr(cmd, '='); + setenv("GIT_PAGER", equal + 1, 1); + setup_pager(); } else if (!strcmp(cmd, "-n") || !strcmp(cmd, "--name-rev")) setup_name_rev_pager(0); else if (!strcmp(cmd, "-t") || -- 1.5.0.4.2713.g4ff1