]> git.ipfire.org Git - thirdparty/git.git/commit
merge-ort: capture and print ll-merge warnings in our preferred fashion
authorElijah Newren <newren@gmail.com>
Wed, 2 Feb 2022 02:37:31 +0000 (02:37 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Feb 2022 18:02:27 +0000 (10:02 -0800)
commit24dbdab50ddaadf6a7abaf5537e0dad36d91e49a
tree7b446e3e184166d479099136b153de6eff67cde2
parent35f6967161860cb5c067e961b7283e8389ff0726
merge-ort: capture and print ll-merge warnings in our preferred fashion

Instead of immediately printing ll-merge warnings to stderr, we save
them in our output strbuf.  Besides allowing us to move these warnings
to a special file for --remerge-diff, this has two other benefits for
regular merges done by merge-ort:

  * The deferral of messages ensures we can print all messages about
    any given path together (merge-recursive was known to sometimes
    intersperse messages about other paths, particularly when renames
    were involved).

  * The deferral of messages means we can avoid printing spurious
    conflict messages when we just end up aborting due to local user
    modifications in the way.  (In contrast to merge-recursive.c which
    prematurely checks for local modifications in the way via
    unpack_trees() and gets the check wrong both in terms of false
    positives and false negatives relative to renames, merge-ort does
    not perform the local modifications in the way check until the
    checkout() step after the full merge has been computed.)

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-ort.c
t/t6404-recursive-merge.sh
t/t6406-merge-attr.sh