|  | #!/bin/sh | 
|  |  | 
|  | test_description='Merge-recursive merging renames' | 
|  | . ./test-lib.sh | 
|  |  | 
|  | test_expect_success setup \ | 
|  | ' | 
|  | cat >A <<\EOF && | 
|  | a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 
|  | b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | 
|  | c cccccccccccccccccccccccccccccccccccccccccccccccc | 
|  | d dddddddddddddddddddddddddddddddddddddddddddddddd | 
|  | e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee | 
|  | f ffffffffffffffffffffffffffffffffffffffffffffffff | 
|  | g gggggggggggggggggggggggggggggggggggggggggggggggg | 
|  | h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh | 
|  | i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 
|  | j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj | 
|  | k kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk | 
|  | l llllllllllllllllllllllllllllllllllllllllllllllll | 
|  | m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm | 
|  | n nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn | 
|  | o oooooooooooooooooooooooooooooooooooooooooooooooo | 
|  | EOF | 
|  |  | 
|  | cat >M <<\EOF && | 
|  | A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 
|  | B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB | 
|  | C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC | 
|  | D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD | 
|  | E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE | 
|  | F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | 
|  | G GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG | 
|  | H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH | 
|  | I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII | 
|  | J JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ | 
|  | K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK | 
|  | L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL | 
|  | M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM | 
|  | N NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN | 
|  | O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO | 
|  | EOF | 
|  |  | 
|  | git add A M && | 
|  | git commit -m "initial has A and M" && | 
|  | git branch white && | 
|  | git branch red && | 
|  | git branch blue && | 
|  |  | 
|  | git checkout white && | 
|  | sed -e "/^g /s/.*/g : white changes a line/" <A >B && | 
|  | sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N && | 
|  | rm -f A M && | 
|  | git update-index --add --remove A B M N && | 
|  | git commit -m "white renames A->B, M->N" && | 
|  |  | 
|  | git checkout red && | 
|  | echo created by red >R && | 
|  | git update-index --add R && | 
|  | git commit -m "red creates R" && | 
|  |  | 
|  | git checkout blue && | 
|  | sed -e "/^o /s/.*/g : blue changes a line/" <A >B && | 
|  | rm -f A && | 
|  | mv B A && | 
|  | git update-index A && | 
|  | git commit -m "blue modify A" && | 
|  |  | 
|  | git checkout master' | 
|  |  | 
|  | # This test broke in 65ac6e9c3f47807cb603af07a6a9e1a43bc119ae | 
|  | test_expect_success 'merge white into red (A->B,M->N)' \ | 
|  | ' | 
|  | git checkout -b red-white red && | 
|  | git merge white && | 
|  | git write-tree && | 
|  | test_path_is_file B && | 
|  | test_path_is_file N && | 
|  | test_path_is_file R && | 
|  | test_path_is_missing A && | 
|  | test_path_is_missing M | 
|  | ' | 
|  |  | 
|  | # This test broke in 8371234ecaaf6e14fe3f2082a855eff1bbd79ae9 | 
|  | test_expect_success 'merge blue into white (A->B, mod A, A untracked)' \ | 
|  | ' | 
|  | git checkout -b white-blue white && | 
|  | echo dirty >A && | 
|  | git merge blue && | 
|  | git write-tree && | 
|  | test_path_is_file A && | 
|  | echo dirty >expect && | 
|  | test_cmp expect A && | 
|  | test_path_is_file B && | 
|  | test_path_is_file N && | 
|  | test_path_is_missing M | 
|  | ' | 
|  |  | 
|  | test_done |