#!/bin/sh global test_description := ''checkout -m -- Ensures that checkout -m on a resolved file restores the conflicted file'' source ./test-lib.sh test_expect_success setup ' test_tick && test_commit both.txt both.txt initial && git branch topic && test_commit modified_in_master both.txt in_master && test_commit added_in_master each.txt in_master && git checkout topic && test_commit modified_in_topic both.txt in_topic && test_commit added_in_topic each.txt in_topic ' test_expect_success 'git merge master' ' test_must_fail git merge master ' proc clean_branchnames { # Remove branch names after conflict lines sed 's/^\([<>]\{5,\}\) .*$/\1/' } test_expect_success '-m restores 2-way conflicted+resolved file' ' cp each.txt each.txt.conflicted && echo resolved >each.txt && git add each.txt && git checkout -m -- each.txt && clean_branchnames each.txt.cleaned && clean_branchnames each.txt.conflicted.cleaned && test_cmp each.txt.conflicted.cleaned each.txt.cleaned ' test_expect_success '-m restores 3-way conflicted+resolved file' ' cp both.txt both.txt.conflicted && echo resolved >both.txt && git add both.txt && git checkout -m -- both.txt && clean_branchnames both.txt.cleaned && clean_branchnames both.txt.conflicted.cleaned && test_cmp both.txt.conflicted.cleaned both.txt.cleaned ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: { (SQ <"checkout -m -- \n"> <"\n"> <"Ensures that checkout -m on a resolved file restores the conflicted file"> ) } spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\ttest_tick &&\n"> <"\ttest_commit both.txt both.txt initial &&\n"> <"\tgit branch topic &&\n"> <"\ttest_commit modified_in_master both.txt in_master &&\n"> <"\ttest_commit added_in_master each.txt in_master &&\n"> <"\tgit checkout topic &&\n"> <"\ttest_commit modified_in_topic both.txt in_topic &&\n"> <"\ttest_commit added_in_topic each.txt in_topic\n"> ) } ) (C {(test_expect_success)} {(SQ <"git merge master">)} {(SQ <"\n"> <" test_must_fail git merge master\n">)} ) (FuncDef name: clean_branchnames body: (BraceGroup children:[(C {(sed)} {(SQ <"s/^\\([<>]\\{5,\\}\\) .*$/\\1/">)})] spids:[51]) spids: [46 50] ) (C {(test_expect_success)} {(SQ <"-m restores 2-way conflicted+resolved file">)} { (SQ <"\n"> <"\tcp each.txt each.txt.conflicted &&\n"> <"\techo resolved >each.txt &&\n"> <"\tgit add each.txt &&\n"> <"\tgit checkout -m -- each.txt &&\n"> <"\tclean_branchnames each.txt.cleaned &&\n"> <"\tclean_branchnames each.txt.conflicted.cleaned &&\n"> <"\ttest_cmp each.txt.conflicted.cleaned each.txt.cleaned\n"> ) } ) (C {(test_expect_success)} {(SQ <"-m restores 3-way conflicted+resolved file">)} { (SQ <"\n"> <"\tcp both.txt both.txt.conflicted &&\n"> <"\techo resolved >both.txt &&\n"> <"\tgit add both.txt &&\n"> <"\tgit checkout -m -- both.txt &&\n"> <"\tclean_branchnames both.txt.cleaned &&\n"> <"\tclean_branchnames both.txt.conflicted.cleaned &&\n"> <"\ttest_cmp both.txt.conflicted.cleaned both.txt.cleaned\n"> ) } ) (C {(test_done)}) ] )