96 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# Copyright (c) 2005 Fredrik Kuivinen
 | 
						|
#
 | 
						|
 | 
						|
# See http://marc.info/?l=git&m=111463358500362&w=2 for a
 | 
						|
# nice description of what this is about.
 | 
						|
 | 
						|
 | 
						|
test_description='Test criss-cross merge'
 | 
						|
. ./test-lib.sh
 | 
						|
 | 
						|
test_expect_success 'prepare repository' \
 | 
						|
'echo "1
 | 
						|
2
 | 
						|
3
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8
 | 
						|
9" > file &&
 | 
						|
git add file &&
 | 
						|
git commit -m "Initial commit" file &&
 | 
						|
git branch A &&
 | 
						|
git branch B &&
 | 
						|
git checkout A &&
 | 
						|
echo "1
 | 
						|
2
 | 
						|
3
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8 changed in B8, branch A
 | 
						|
9" > file &&
 | 
						|
git commit -m "B8" file &&
 | 
						|
git checkout B &&
 | 
						|
echo "1
 | 
						|
2
 | 
						|
3 changed in C3, branch B
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8
 | 
						|
9
 | 
						|
" > file &&
 | 
						|
git commit -m "C3" file &&
 | 
						|
git branch C3 &&
 | 
						|
git merge -m "pre E3 merge" A &&
 | 
						|
echo "1
 | 
						|
2
 | 
						|
3 changed in E3, branch B. New file size
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8 changed in B8, branch A
 | 
						|
9
 | 
						|
" > file &&
 | 
						|
git commit -m "E3" file &&
 | 
						|
git checkout A &&
 | 
						|
git merge -m "pre D8 merge" C3 &&
 | 
						|
echo "1
 | 
						|
2
 | 
						|
3 changed in C3, branch B
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8 changed in D8, branch A. New file size 2
 | 
						|
9" > file &&
 | 
						|
git commit -m D8 file'
 | 
						|
 | 
						|
test_expect_success 'Criss-cross merge' 'git merge -m "final merge" B'
 | 
						|
 | 
						|
cat > file-expect <<EOF
 | 
						|
1
 | 
						|
2
 | 
						|
3 changed in E3, branch B. New file size
 | 
						|
4
 | 
						|
5
 | 
						|
6
 | 
						|
7
 | 
						|
8 changed in D8, branch A. New file size 2
 | 
						|
9
 | 
						|
EOF
 | 
						|
 | 
						|
test_expect_success 'Criss-cross merge result' 'cmp file file-expect'
 | 
						|
 | 
						|
test_expect_success 'Criss-cross merge fails (-s resolve)' \
 | 
						|
'git reset --hard A^ &&
 | 
						|
test_must_fail git merge -s resolve -m "final merge" B'
 | 
						|
 | 
						|
test_done
 |