(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <'git rebase -p should preserve merges\n'> <'\n'> <'Run "git rebase -p" and check that merges are properly carried along\n'> ) } spids: [12] ) ] spids: [12] ) (C {(.)} {(./test-lib.sh)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_AUTHOR_EMAIL) op: Equal rhs: {(bogus_email_address)} spids: [24] ) ] spids: [24] ) (C {(export)} {(GIT_AUTHOR_EMAIL)}) (C {(test_expect_success)} {(SQ <'setup for merge-preserving rebase'>)} { (SQ <'echo First > A &&\n'> <'\tgit add A &&\n'> <'\tgit commit -m "Add A1" &&\n'> <'\tgit checkout -b topic &&\n'> <'\techo Second > B &&\n'> <'\tgit add B &&\n'> <'\tgit commit -m "Add B1" &&\n'> <'\tgit checkout -f master &&\n'> <'\techo Third >> A &&\n'> <'\tgit commit -a -m "Modify A2" &&\n'> <'\techo Fifth > B &&\n'> <'\tgit add B &&\n'> <'\tgit commit -m "Add different B" &&\n'> <'\n'> <'\tgit clone ./. clone2 &&\n'> <'\t(\n'> <'\t\tcd clone2 &&\n'> <'\t\tgit checkout -b topic origin/topic &&\n'> <'\t\ttest_must_fail git merge origin/master &&\n'> <'\t\techo Resolved >B &&\n'> <'\t\tgit add B &&\n'> <'\t\tgit commit -m "Merge origin/master into topic"\n'> <'\t) &&\n'> <'\n'> <'\tgit clone ./. clone3 &&\n'> <'\t(\n'> <'\t\tcd clone3 &&\n'> <'\t\tgit checkout -b topic2 origin/topic &&\n'> <'\t\techo Sixth > A &&\n'> <'\t\tgit commit -a -m "Modify A3" &&\n'> <'\t\tgit checkout -b topic origin/topic &&\n'> <'\t\tgit merge --no-ff topic2\n'> <'\t) &&\n'> <'\n'> <'\tgit clone ./. clone4 &&\n'> <'\t(\n'> <'\t\tcd clone4 &&\n'> <'\t\tgit checkout -b topic2 origin/topic &&\n'> <'\t\techo Sixth > A &&\n'> <'\t\tgit commit -a -m "Modify A3" &&\n'> <'\t\tgit checkout -b topic origin/topic &&\n'> <'\t\tgit merge --no-ff topic2\n'> <'\t) &&\n'> <'\n'> <'\tgit checkout topic &&\n'> <'\techo Fourth >> B &&\n'> <'\tgit commit -a -m "Modify B2"\n'> ) } ) (C {(test_expect_success)} {(SQ <'--continue works after a conflict'>)} { (SQ <'\n'> <'\t(\n'> <'\tcd clone2 &&\n'> <'\tgit fetch &&\n'> <'\ttest_must_fail git rebase -p origin/topic &&\n'> <'\ttest 2 = $(git ls-files B | wc -l) &&\n'> <'\techo Resolved again > B &&\n'> <'\ttest_must_fail git rebase --continue &&\n'> <'\tgrep "^@@@ " .git/rebase-merge/patch &&\n'> <'\tgit add B &&\n'> <'\tgit rebase --continue &&\n'> <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'> <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Add different" | wc -l) &&\n'> <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge origin" | wc -l)\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rebase -p preserves no-ff merges'>)} { (SQ <'\n'> <'\t(\n'> <'\tcd clone3 &&\n'> <'\tgit fetch &&\n'> <'\tgit rebase -p origin/topic &&\n'> <'\ttest 3 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'> <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge branch" | wc -l)\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rebase -p ignores merge.log config'>)} { (SQ <'\n'> <'\t(\n'> <'\tcd clone4 &&\n'> <'\tgit fetch &&\n'> <'\tgit -c merge.log=1 rebase -p origin/topic &&\n'> <'\techo >expected &&\n'> <'\tgit log --format="%b" -1 >current &&\n'> <'\ttest_cmp expected current\n'> <'\t)\n'> ) } ) (C {(test_done)}) ] )