#!/bin/sh global test_description := ''merge fast-forward and up to date'' source ./test-lib.sh test_expect_success setup ' >file && git add file && test_tick && git commit -m initial && git tag c0 && echo second >file && git add file && test_tick && git commit -m second && git tag c1 && git branch test && echo third >file && git add file && test_tick && git commit -m third && git tag c2 ' test_expect_success 'merge -s recursive up-to-date' ' git reset --hard c1 && test_tick && git merge -s recursive c0 && expect=$(git rev-parse c1) && current=$(git rev-parse HEAD) && test "$expect" = "$current" ' test_expect_success 'merge -s recursive fast-forward' ' git reset --hard c0 && test_tick && git merge -s recursive c1 && expect=$(git rev-parse c1) && current=$(git rev-parse HEAD) && test "$expect" = "$current" ' test_expect_success 'merge -s ours up-to-date' ' git reset --hard c1 && test_tick && git merge -s ours c0 && expect=$(git rev-parse c1) && current=$(git rev-parse HEAD) && test "$expect" = "$current" ' test_expect_success 'merge -s ours fast-forward' ' git reset --hard c0 && test_tick && git merge -s ours c1 && expect=$(git rev-parse c0^{tree}) && current=$(git rev-parse HEAD^{tree}) && test "$expect" = "$current" ' test_expect_success 'merge -s subtree up-to-date' ' git reset --hard c1 && test_tick && git merge -s subtree c0 && expect=$(git rev-parse c1) && current=$(git rev-parse HEAD) && test "$expect" = "$current" ' test_expect_success 'merge fast-forward octopus' ' git reset --hard c0 && test_tick && git merge c1 c2 && expect=$(git rev-parse c2) && current=$(git rev-parse HEAD) && test "$expect" = "$current" ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"merge fast-forward and up to date">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\t>file &&\n"> <"\tgit add file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m initial &&\n"> <"\tgit tag c0 &&\n"> <"\n"> <"\techo second >file &&\n"> <"\tgit add file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m second &&\n"> <"\tgit tag c1 &&\n"> <"\tgit branch test &&\n"> <"\techo third >file &&\n"> <"\tgit add file &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m third &&\n"> <"\tgit tag c2\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge -s recursive up-to-date">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c1 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge -s recursive c0 &&\n"> <"\texpect=$(git rev-parse c1) &&\n"> <"\tcurrent=$(git rev-parse HEAD) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge -s recursive fast-forward">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c0 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge -s recursive c1 &&\n"> <"\texpect=$(git rev-parse c1) &&\n"> <"\tcurrent=$(git rev-parse HEAD) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge -s ours up-to-date">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c1 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge -s ours c0 &&\n"> <"\texpect=$(git rev-parse c1) &&\n"> <"\tcurrent=$(git rev-parse HEAD) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge -s ours fast-forward">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c0 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge -s ours c1 &&\n"> <"\texpect=$(git rev-parse c0^{tree}) &&\n"> <"\tcurrent=$(git rev-parse HEAD^{tree}) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge -s subtree up-to-date">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c1 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge -s subtree c0 &&\n"> <"\texpect=$(git rev-parse c1) &&\n"> <"\tcurrent=$(git rev-parse HEAD) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge fast-forward octopus">)} { (SQ <"\n"> <"\n"> <"\tgit reset --hard c0 &&\n"> <"\ttest_tick &&\n"> <"\tgit merge c1 c2 &&\n"> <"\texpect=$(git rev-parse c2) &&\n"> <"\tcurrent=$(git rev-parse HEAD) &&\n"> <"\ttest \"$expect\" = \"$current\"\n"> ) } ) (C {(test_done)}) ] )