show, log: include conflict/warning messages in --remerge-diff headers
Conflicts such as modify/delete, rename/rename, or file/directory are not representable via content conflict markers, and the normal output messages notifying users about these were dropped with --remerge-diff. While we don't want these messages randomly shown before the commit and diff headers, we do want them to still be shown; include them as part of the diff headers instead. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
95433eeed9
commit
20323d104e
@ -60,6 +60,7 @@ test_expect_success 'remerge-diff with both a resolved conflict and an unrelated
|
||||
git log -1 --oneline ab_resolution >tmp &&
|
||||
cat <<-EOF >>tmp &&
|
||||
diff --git a/numbers b/numbers
|
||||
remerge CONFLICT (content): Merge conflict in numbers
|
||||
index a1fb731..6875544 100644
|
||||
--- a/numbers
|
||||
+++ b/numbers
|
||||
@ -88,4 +89,147 @@ test_expect_success 'remerge-diff with both a resolved conflict and an unrelated
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup non-content conflicts' '
|
||||
git switch --orphan base &&
|
||||
|
||||
test_write_lines 1 2 3 4 5 6 7 8 9 >numbers &&
|
||||
test_write_lines a b c d e f g h i >letters &&
|
||||
test_write_lines in the way >content &&
|
||||
git add numbers letters content &&
|
||||
git commit -m base &&
|
||||
|
||||
git branch side1 &&
|
||||
git branch side2 &&
|
||||
|
||||
git checkout side1 &&
|
||||
test_write_lines 1 2 three 4 5 6 7 8 9 >numbers &&
|
||||
git mv letters letters_side1 &&
|
||||
git mv content file_or_directory &&
|
||||
git add numbers &&
|
||||
git commit -m side1 &&
|
||||
|
||||
git checkout side2 &&
|
||||
git rm numbers &&
|
||||
git mv letters letters_side2 &&
|
||||
mkdir file_or_directory &&
|
||||
echo hello >file_or_directory/world &&
|
||||
git add file_or_directory/world &&
|
||||
git commit -m side2 &&
|
||||
|
||||
git checkout -b resolution side1 &&
|
||||
test_must_fail git merge side2 &&
|
||||
test_write_lines 1 2 three 4 5 6 7 8 9 >numbers &&
|
||||
git add numbers &&
|
||||
git add letters_side1 &&
|
||||
git rm letters &&
|
||||
git rm letters_side2 &&
|
||||
git add file_or_directory~HEAD &&
|
||||
git mv file_or_directory~HEAD wanted_content &&
|
||||
git commit -m resolved
|
||||
'
|
||||
|
||||
test_expect_success 'remerge-diff with non-content conflicts' '
|
||||
git log -1 --oneline resolution >tmp &&
|
||||
cat <<-EOF >>tmp &&
|
||||
diff --git a/file_or_directory~HASH (side1) b/wanted_content
|
||||
similarity index 100%
|
||||
rename from file_or_directory~HASH (side1)
|
||||
rename to wanted_content
|
||||
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
|
||||
diff --git a/letters b/letters
|
||||
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
|
||||
diff --git a/letters_side2 b/letters_side2
|
||||
deleted file mode 100644
|
||||
index b236ae5..0000000
|
||||
--- a/letters_side2
|
||||
+++ /dev/null
|
||||
@@ -1,9 +0,0 @@
|
||||
-a
|
||||
-b
|
||||
-c
|
||||
-d
|
||||
-e
|
||||
-f
|
||||
-g
|
||||
-h
|
||||
-i
|
||||
diff --git a/numbers b/numbers
|
||||
remerge CONFLICT (modify/delete): numbers deleted in HASH (side2) and modified in HASH (side1). Version HASH (side1) of numbers left in tree.
|
||||
EOF
|
||||
# We still have some sha1 hashes above; rip them out so test works
|
||||
# with sha256
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
|
||||
|
||||
git show --oneline --remerge-diff resolution >tmp &&
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'remerge-diff w/ diff-filter=U: all conflict headers, no diff content' '
|
||||
git log -1 --oneline resolution >tmp &&
|
||||
cat <<-EOF >>tmp &&
|
||||
diff --git a/file_or_directory~HASH (side1) b/file_or_directory~HASH (side1)
|
||||
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
|
||||
diff --git a/letters b/letters
|
||||
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
|
||||
diff --git a/numbers b/numbers
|
||||
remerge CONFLICT (modify/delete): numbers deleted in HASH (side2) and modified in HASH (side1). Version HASH (side1) of numbers left in tree.
|
||||
EOF
|
||||
# We still have some sha1 hashes above; rip them out so test works
|
||||
# with sha256
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
|
||||
|
||||
git show --oneline --remerge-diff --diff-filter=U resolution >tmp &&
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'remerge-diff w/ diff-filter=R: relevant file + conflict header' '
|
||||
git log -1 --oneline resolution >tmp &&
|
||||
cat <<-EOF >>tmp &&
|
||||
diff --git a/file_or_directory~HASH (side1) b/wanted_content
|
||||
similarity index 100%
|
||||
rename from file_or_directory~HASH (side1)
|
||||
rename to wanted_content
|
||||
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
|
||||
EOF
|
||||
# We still have some sha1 hashes above; rip them out so test works
|
||||
# with sha256
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
|
||||
|
||||
git show --oneline --remerge-diff --diff-filter=R resolution >tmp &&
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'remerge-diff w/ pathspec: limits to relevant file including conflict header' '
|
||||
git log -1 --oneline resolution >tmp &&
|
||||
cat <<-EOF >>tmp &&
|
||||
diff --git a/letters b/letters
|
||||
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
|
||||
diff --git a/letters_side2 b/letters_side2
|
||||
deleted file mode 100644
|
||||
index b236ae5..0000000
|
||||
--- a/letters_side2
|
||||
+++ /dev/null
|
||||
@@ -1,9 +0,0 @@
|
||||
-a
|
||||
-b
|
||||
-c
|
||||
-d
|
||||
-e
|
||||
-f
|
||||
-g
|
||||
-h
|
||||
-i
|
||||
EOF
|
||||
# We still have some sha1 hashes above; rip them out so test works
|
||||
# with sha256
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
|
||||
|
||||
git show --oneline --remerge-diff --full-history resolution -- "letters*" >tmp &&
|
||||
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user