Add diff-option --ext-diff
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Sat, 30 Jun 2007 17:47:07 +0000 (18:47 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Jul 2007 02:05:55 +0000 (19:05 -0700)
To prevent funky games with external diff engines, git-log and
friends prevent external diff engines from being called. That makes
sense in the context of git-format-patch or git-rebase.

However, for "git log -p" it is not so nice to get the message
that binary files cannot be compared, while "git diff" has no
problems with them, if you provided an external diff driver.

With this patch, "git log --ext-diff -p" will do what you expect,
and the option "--no-ext-diff" can be used to override that
setting.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/diff-options.txt
diff.c

index 0f07c9c4a86df8ac2d7ab2f99e31226e395b63ab..3d2b9d0a06f38c42c0df927fa03a053fa1b45277 100644 (file)
 --quiet::
        Disable all output of the program. Implies --exit-code.
 
+--ext-diff::
+       Allow an external diff helper to be executed. If you set an
+       external diff driver with gitlink:gitattributes(5), you need
+       to use this option with gitlink:git-log(1) and friends.
+
+--no-ext-diff::
+       Disallow external diff drivers.
+
 For more detailed explanation on these common options, see also
 link:diffcore.html[diffcore documentation].
diff --git a/diff.c b/diff.c
index 93eca79c1762e697d57ccd8c49b2f7994f722c89..b6eb72be029c9cd2f2b33977f3a3f02099b68106 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -2241,6 +2241,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                options->exit_with_status = 1;
        else if (!strcmp(arg, "--quiet"))
                options->quiet = 1;
+       else if (!strcmp(arg, "--ext-diff"))
+               options->allow_external = 1;
+       else if (!strcmp(arg, "--no-ext-diff"))
+               options->allow_external = 0;
        else
                return 0;
        return 1;