merge(3p/git): Merge git upstream at v2.26.2
This commit is contained in:
commit
5229c9b232
1006 changed files with 149006 additions and 60819 deletions
211
third_party/git/t/t6047-diff3-conflict-markers.sh
vendored
Executable file
211
third_party/git/t/t6047-diff3-conflict-markers.sh
vendored
Executable file
|
|
@ -0,0 +1,211 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='recursive merge diff3 style conflict markers'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
# Setup:
|
||||
# L1
|
||||
# \
|
||||
# ?
|
||||
# /
|
||||
# R1
|
||||
#
|
||||
# Where:
|
||||
# L1 and R1 both have a file named 'content' but have no common history
|
||||
#
|
||||
|
||||
test_expect_success 'setup no merge base' '
|
||||
test_create_repo no_merge_base &&
|
||||
(
|
||||
cd no_merge_base &&
|
||||
|
||||
git checkout -b L &&
|
||||
test_commit A content A &&
|
||||
|
||||
git checkout --orphan R &&
|
||||
test_commit B content B
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'check no merge base' '
|
||||
(
|
||||
cd no_merge_base &&
|
||||
|
||||
git checkout L^0 &&
|
||||
|
||||
test_must_fail git -c merge.conflictstyle=diff3 merge --allow-unrelated-histories -s recursive R^0 &&
|
||||
|
||||
grep "|||||| empty tree" content
|
||||
)
|
||||
'
|
||||
|
||||
# Setup:
|
||||
# L1
|
||||
# / \
|
||||
# master ?
|
||||
# \ /
|
||||
# R1
|
||||
#
|
||||
# Where:
|
||||
# L1 and R1 have modified the same file ('content') in conflicting ways
|
||||
#
|
||||
|
||||
test_expect_success 'setup unique merge base' '
|
||||
test_create_repo unique_merge_base &&
|
||||
(
|
||||
cd unique_merge_base &&
|
||||
|
||||
test_commit base content "1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
" &&
|
||||
|
||||
git branch L &&
|
||||
git branch R &&
|
||||
|
||||
git checkout L &&
|
||||
test_commit L content "1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
7" &&
|
||||
|
||||
git checkout R &&
|
||||
git rm content &&
|
||||
test_commit R renamed "1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
six"
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'check unique merge base' '
|
||||
(
|
||||
cd unique_merge_base &&
|
||||
|
||||
git checkout L^0 &&
|
||||
MASTER=$(git rev-parse --short master) &&
|
||||
|
||||
test_must_fail git -c merge.conflictstyle=diff3 merge -s recursive R^0 &&
|
||||
|
||||
grep "|||||| $MASTER:content" renamed
|
||||
)
|
||||
'
|
||||
|
||||
# Setup:
|
||||
# L1---L2--L3
|
||||
# / \ / \
|
||||
# master X1 ?
|
||||
# \ / \ /
|
||||
# R1---R2--R3
|
||||
#
|
||||
# Where:
|
||||
# commits L1 and R1 have modified the same file in non-conflicting ways
|
||||
# X1 is an auto-generated merge-base used when merging L1 and R1
|
||||
# commits L2 and R2 are merges of R1 and L1 into L1 and R1, respectively
|
||||
# commits L3 and R3 both modify 'content' in conflicting ways
|
||||
#
|
||||
|
||||
test_expect_success 'setup multiple merge bases' '
|
||||
test_create_repo multiple_merge_bases &&
|
||||
(
|
||||
cd multiple_merge_bases &&
|
||||
|
||||
test_commit initial content "1
|
||||
2
|
||||
3
|
||||
4
|
||||
5" &&
|
||||
|
||||
git branch L &&
|
||||
git branch R &&
|
||||
|
||||
# Create L1
|
||||
git checkout L &&
|
||||
test_commit L1 content "0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5" &&
|
||||
|
||||
# Create R1
|
||||
git checkout R &&
|
||||
test_commit R1 content "1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6" &&
|
||||
|
||||
# Create L2
|
||||
git checkout L &&
|
||||
git merge R1 &&
|
||||
|
||||
# Create R2
|
||||
git checkout R &&
|
||||
git merge L1 &&
|
||||
|
||||
# Create L3
|
||||
git checkout L &&
|
||||
test_commit L3 content "0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
A" &&
|
||||
|
||||
# Create R3
|
||||
git checkout R &&
|
||||
git rm content &&
|
||||
test_commit R3 renamed "0
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
six"
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'check multiple merge bases' '
|
||||
(
|
||||
cd multiple_merge_bases &&
|
||||
|
||||
git checkout L^0 &&
|
||||
|
||||
test_must_fail git -c merge.conflictstyle=diff3 merge -s recursive R^0 &&
|
||||
|
||||
grep "|||||| merged common ancestors:content" renamed
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'rebase --merge describes parent of commit being picked' '
|
||||
test_create_repo rebase &&
|
||||
(
|
||||
cd rebase &&
|
||||
test_commit base file &&
|
||||
test_commit master file &&
|
||||
git checkout -b side HEAD^ &&
|
||||
test_commit side file &&
|
||||
test_must_fail git -c merge.conflictstyle=diff3 rebase --merge master &&
|
||||
grep "||||||| parent of" file
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'rebase --apply describes fake ancestor base' '
|
||||
(
|
||||
cd rebase &&
|
||||
git rebase --abort &&
|
||||
test_must_fail git -c merge.conflictstyle=diff3 rebase --apply master &&
|
||||
grep "||||||| constructed merge base" file
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
Loading…
Add table
Add a link
Reference in a new issue