159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
| : 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'
 |