fix remote.origin.url in tutorial.txt
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index e0edb98846753f39cab9e377c9ac4af2d7fdbf35..19589707c4cf40e622b0f7b98b8fd07704b37c01 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;
@@ -2414,7 +2418,8 @@ static void diff_flush_raw(struct diff_filepair *p,
                printf("%s ",
                       diff_unique_abbrev(p->two->sha1, abbrev));
        }
-       printf("%s%c%s", status, inter_name_termination, path_one);
+       printf("%s%c%s", status, inter_name_termination,
+                       two_paths || p->one->mode ?  path_one : path_two);
        if (two_paths)
                printf("%c%s", inter_name_termination, path_two);
        putchar(line_termination);
@@ -3005,6 +3010,22 @@ void diffcore_std(struct diff_options *options)
 {
        if (options->quiet)
                return;
+
+       /*
+        * break/rename count similarity differently depending on
+        * the binary-ness.
+        */
+       if ((options->break_opt != -1) || (options->detect_rename)) {
+               struct diff_queue_struct *q = &diff_queued_diff;
+               int i;
+
+               for (i = 0; i < q->nr; i++) {
+                       struct diff_filepair *p = q->queue[i];
+                       p->one->is_binary = file_is_binary(p->one);
+                       p->two->is_binary = file_is_binary(p->two);
+               }
+       }
+
        if (options->break_opt != -1)
                diffcore_break(options->break_opt);
        if (options->detect_rename)