]> Kevux Git Server - rit/commitdiff
Teach diff to imply --find-copies-harder upon -C -C
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Mon, 11 Jun 2007 20:12:19 +0000 (21:12 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 12 Jun 2007 08:00:38 +0000 (01:00 -0700)
Earlier, a second "-C" on the command line had no effect.
But "--find-copies-harder" is so long to type, let's make doubled -C
enable that option.  It is in line with how "git blame" handles such
doubled options to mean "work harder".

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 b2a0593..0f07c9c 100644 (file)
@@ -86,7 +86,7 @@
        Detect renames.
 
 -C::
-       Detect copies as well as renames.
+       Detect copies as well as renames.  See also `--find-copies-harder`.
 
 --diff-filter=[ACDMRTUXB*]::
        Select only files that are Added (`A`), Copied (`C`),
        that matches other criteria, nothing is selected.
 
 --find-copies-harder::
-       For performance reasons, by default, -C option finds copies only
+       For performance reasons, by default, `-C` option finds copies only
        if the original file of the copy was modified in the same
        changeset.  This flag makes the command
        inspect unmodified files as candidates for the source of
        copy.  This is a very expensive operation for large
-       projects, so use it with caution.
+       projects, so use it with caution.  Giving more than one
+       `-C` option has the same effect.
 
 -l<num>::
        -M and -C options require O(n^2) processing time where n
diff --git a/diff.c b/diff.c
index 1d234d3..4aa9bbc 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -2201,6 +2201,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                options->detect_rename = DIFF_DETECT_RENAME;
        }
        else if (!prefixcmp(arg, "-C")) {
+               if (options->detect_rename == DIFF_DETECT_COPY)
+                       options->find_copies_harder = 1;
                if ((options->rename_score =
                     diff_scoreopt_parse(arg)) == -1)
                        return -1;