]> Pileus Git - ~andy/git/commitdiff
diff: allow unstuck arguments with --diff-algorithm
authorJohn Keeping <john@keeping.me.uk>
Fri, 5 Apr 2013 12:19:14 +0000 (13:19 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Apr 2013 18:01:08 +0000 (11:01 -0700)
The argument to --diff-algorithm is mandatory, so there is no reason to
require the argument to be stuck to the option with '='.  Change this
for consistency with other Git commands.

Note that this does not change the handling of diff-algorithm in
merge-recursive.c since the primary interface to that is via the -X
option to 'git merge' where the unstuck form does not make sense.

Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index 0724fa6ff6c4312733e520d59f88ea12740d408d..08e39144c2fe214b3e556a9759720da1c7caa99c 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -3634,8 +3634,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
        else if (!strcmp(arg, "--histogram"))
                options->xdl_opts = DIFF_WITH_ALG(options, HISTOGRAM_DIFF);
-       else if (!prefixcmp(arg, "--diff-algorithm=")) {
-               long value = parse_algorithm_value(arg+17);
+       else if ((argcount = parse_long_opt("diff-algorithm", av, &optarg))) {
+               long value = parse_algorithm_value(optarg);
                if (value < 0)
                        return error("option diff-algorithm accepts \"myers\", "
                                     "\"minimal\", \"patience\" and \"histogram\"");
@@ -3643,6 +3643,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                DIFF_XDL_CLR(options, NEED_MINIMAL);
                options->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;
                options->xdl_opts |= value;
+               return argcount;
        }
 
        /* flags options */