From 24dbdab50ddaadf6a7abaf5537e0dad36d91e49a Mon Sep 17 00:00:00 2001 From: Elijah Newren Date: Wed, 2 Feb 2022 02:37:31 +0000 Subject: 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 Signed-off-by: Junio C Hamano --- merge-ort.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'merge-ort.c') diff --git a/merge-ort.c b/merge-ort.c index c24da2ba3c..a18f47e23c 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -1788,8 +1788,9 @@ static int merge_3way(struct merge_options *opt, &src1, name1, &src2, name2, &opt->priv->attr_index, &ll_opts); if (merge_status == LL_MERGE_BINARY_CONFLICT) - warning("Cannot merge binary files: %s (%s vs. %s)", - path, name1, name2); + path_msg(opt, path, 0, + "warning: Cannot merge binary files: %s (%s vs. %s)", + path, name1, name2); free(base); free(name1); -- cgit v1.2.3