|  | #!/bin/sh | 
|  |  | 
|  | test_description='merging with submodules' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | # | 
|  | # history | 
|  | # | 
|  | #        a --- c | 
|  | #      /   \ / | 
|  | # root      X | 
|  | #      \   / \ | 
|  | #        b --- d | 
|  | # | 
|  |  | 
|  | test_expect_success setup ' | 
|  |  | 
|  | mkdir sub && | 
|  | (cd sub && | 
|  | git init && | 
|  | echo original > file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m sub-root) && | 
|  | git add sub && | 
|  | test_tick && | 
|  | git commit -m root && | 
|  |  | 
|  | git checkout -b a master && | 
|  | (cd sub && | 
|  | echo A > file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m sub-a) && | 
|  | git add sub && | 
|  | test_tick && | 
|  | git commit -m a && | 
|  |  | 
|  | git checkout -b b master && | 
|  | (cd sub && | 
|  | echo B > file && | 
|  | git add file && | 
|  | test_tick && | 
|  | git commit -m sub-b) && | 
|  | git add sub && | 
|  | test_tick && | 
|  | git commit -m b | 
|  |  | 
|  | git checkout -b c a && | 
|  | git merge -s ours b && | 
|  |  | 
|  | git checkout -b d b && | 
|  | git merge -s ours a | 
|  | ' | 
|  |  | 
|  | test_expect_success 'merging with modify/modify conflict' ' | 
|  |  | 
|  | git checkout -b test1 a && | 
|  | test_must_fail git merge b && | 
|  | test -f .git/MERGE_MSG && | 
|  | git diff && | 
|  | test -n "$(git ls-files -u)" | 
|  | ' | 
|  |  | 
|  | test_expect_success 'merging with a modify/modify conflict between merge bases' ' | 
|  |  | 
|  | git reset --hard HEAD && | 
|  | git checkout -b test2 c && | 
|  | git merge d | 
|  |  | 
|  | ' | 
|  |  | 
|  | test_done |