• Junio C Hamano's avatar
    diff -B -M: fix output for "copy and then rewrite" case · 6936b585
    Junio C Hamano authored
    Starting from a single file, A, if you create B as a copy of A (and
    possibly make some edit) and then make extensive change to A, you
    will see:
        $ git diff -C --name-status
        C89    A    B
        M      A
    which is expected.  However, if you ask the same question in a
    different way, you see this:
        $ git diff -B -M --name-status
        R89    A    B
        M100   A
    telling us that A was rename-edited into B (as if "A will no longer
    exist as the result") and at the same time A itself was extensively
    In this case, because the resulting tree still does have file A
    (even if it has contents vastly different from the original), we
    should use "C"opy, not "R"ename, to avoid hinting that A somehow
    goes away.
    Two existing tests were depending on the wrong behaviour, and fixed.
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
diffcore-break.c 9 KB