159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
: Included from t1000-read-tree-m-3way.sh and others
 | 
						|
# Original tree.
 | 
						|
mkdir Z
 | 
						|
for a in N D M
 | 
						|
do
 | 
						|
    for b in N D M
 | 
						|
    do
 | 
						|
        p=$a$b
 | 
						|
	echo This is $p from the original tree. >$p
 | 
						|
	echo This is Z/$p from the original tree. >Z/$p
 | 
						|
	test_expect_success \
 | 
						|
	    "adding test file $p and Z/$p" \
 | 
						|
	    'git-update-index --add $p &&
 | 
						|
	    git-update-index --add Z/$p'
 | 
						|
    done
 | 
						|
done
 | 
						|
echo This is SS from the original tree. >SS
 | 
						|
test_expect_success \
 | 
						|
    'adding test file SS' \
 | 
						|
    'git-update-index --add SS'
 | 
						|
cat >TT <<\EOF
 | 
						|
This is a trivial merge sample text.
 | 
						|
Branch A is expected to upcase this word, here.
 | 
						|
There are some filler lines to avoid diff context
 | 
						|
conflicts here,
 | 
						|
like this one,
 | 
						|
and this one,
 | 
						|
and this one is yet another one of them.
 | 
						|
At the very end, here comes another line, that is
 | 
						|
the word, expected to be upcased by Branch B.
 | 
						|
This concludes the trivial merge sample file.
 | 
						|
EOF
 | 
						|
test_expect_success \
 | 
						|
    'adding test file TT' \
 | 
						|
    'git-update-index --add TT'
 | 
						|
test_expect_success \
 | 
						|
    'prepare initial tree' \
 | 
						|
    'tree_O=$(git-write-tree)'
 | 
						|
 | 
						|
################################################################
 | 
						|
# Branch A and B makes the changes according to the above matrix.
 | 
						|
 | 
						|
################################################################
 | 
						|
# Branch A
 | 
						|
 | 
						|
to_remove=$(echo D? Z/D?)
 | 
						|
rm -f $to_remove
 | 
						|
test_expect_success \
 | 
						|
    'change in branch A (removal)' \
 | 
						|
    'git-update-index --remove $to_remove'
 | 
						|
 | 
						|
for p in M? Z/M?
 | 
						|
do
 | 
						|
    echo This is modified $p in the branch A. >$p
 | 
						|
    test_expect_success \
 | 
						|
	'change in branch A (modification)' \
 | 
						|
        "git-update-index $p"
 | 
						|
done
 | 
						|
 | 
						|
for p in AN AA Z/AN Z/AA
 | 
						|
do
 | 
						|
    echo This is added $p in the branch A. >$p
 | 
						|
    test_expect_success \
 | 
						|
	'change in branch A (addition)' \
 | 
						|
	"git-update-index --add $p"
 | 
						|
done
 | 
						|
 | 
						|
echo This is SS from the modified tree. >SS
 | 
						|
echo This is LL from the modified tree. >LL
 | 
						|
test_expect_success \
 | 
						|
    'change in branch A (addition)' \
 | 
						|
    'git-update-index --add LL &&
 | 
						|
     git-update-index SS'
 | 
						|
mv TT TT-
 | 
						|
sed -e '/Branch A/s/word/WORD/g' <TT- >TT
 | 
						|
rm -f TT-
 | 
						|
test_expect_success \
 | 
						|
    'change in branch A (edit)' \
 | 
						|
    'git-update-index TT'
 | 
						|
 | 
						|
mkdir DF
 | 
						|
echo Branch A makes a file at DF/DF, creating a directory DF. >DF/DF
 | 
						|
test_expect_success \
 | 
						|
    'change in branch A (change file to directory)' \
 | 
						|
    'git-update-index --add DF/DF'
 | 
						|
 | 
						|
test_expect_success \
 | 
						|
    'recording branch A tree' \
 | 
						|
    'tree_A=$(git-write-tree)'
 | 
						|
	   
 | 
						|
################################################################
 | 
						|
# Branch B
 | 
						|
# Start from O
 | 
						|
 | 
						|
rm -rf [NDMASLT][NDMASLT] Z DF
 | 
						|
mkdir Z
 | 
						|
test_expect_success \
 | 
						|
    'reading original tree and checking out' \
 | 
						|
    'git-read-tree $tree_O &&
 | 
						|
     git-checkout-index -a'
 | 
						|
 | 
						|
to_remove=$(echo ?D Z/?D)
 | 
						|
rm -f $to_remove
 | 
						|
test_expect_success \
 | 
						|
    'change in branch B (removal)' \
 | 
						|
    "git-update-index --remove $to_remove"
 | 
						|
 | 
						|
for p in ?M Z/?M
 | 
						|
do
 | 
						|
    echo This is modified $p in the branch B. >$p
 | 
						|
    test_expect_success \
 | 
						|
	'change in branch B (modification)' \
 | 
						|
	"git-update-index $p"
 | 
						|
done
 | 
						|
 | 
						|
for p in NA AA Z/NA Z/AA
 | 
						|
do
 | 
						|
    echo This is added $p in the branch B. >$p
 | 
						|
    test_expect_success \
 | 
						|
	'change in branch B (addition)' \
 | 
						|
	"git-update-index --add $p"
 | 
						|
done
 | 
						|
echo This is SS from the modified tree. >SS
 | 
						|
echo This is LL from the modified tree. >LL
 | 
						|
test_expect_success \
 | 
						|
    'change in branch B (addition and modification)' \
 | 
						|
    'git-update-index --add LL &&
 | 
						|
     git-update-index SS'
 | 
						|
mv TT TT-
 | 
						|
sed -e '/Branch B/s/word/WORD/g' <TT- >TT
 | 
						|
rm -f TT-
 | 
						|
test_expect_success \
 | 
						|
    'change in branch B (modification)' \
 | 
						|
    'git-update-index TT'
 | 
						|
 | 
						|
echo Branch B makes a file at DF. >DF
 | 
						|
test_expect_success \
 | 
						|
    'change in branch B (addition of a file to conflict with directory)' \
 | 
						|
    'git-update-index --add DF'
 | 
						|
 | 
						|
test_expect_success \
 | 
						|
    'recording branch B tree' \
 | 
						|
    'tree_B=$(git-write-tree)'
 | 
						|
 | 
						|
test_expect_success \
 | 
						|
    'keep contents of 3 trees for easy access' \
 | 
						|
    'rm -f .git/index &&
 | 
						|
     git-read-tree $tree_O &&
 | 
						|
     mkdir .orig-O &&
 | 
						|
     git-checkout-index --prefix=.orig-O/ -f -q -a &&
 | 
						|
     rm -f .git/index &&
 | 
						|
     git-read-tree $tree_A &&
 | 
						|
     mkdir .orig-A &&
 | 
						|
     git-checkout-index --prefix=.orig-A/ -f -q -a &&
 | 
						|
     rm -f .git/index &&
 | 
						|
     git-read-tree $tree_B &&
 | 
						|
     mkdir .orig-B &&
 | 
						|
     git-checkout-index --prefix=.orig-B/ -f -q -a'
 |