| : 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 | |
| ' |