(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'pulling into void' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: modify body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{(sed)} {(-e)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:31) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$2'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:36) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$2') (.x))} ) ] ) (C {(mv)} {(DQ ($ Id.VSub_Number '$2') (.x))} {(DQ ($ Id.VSub_Number '$2'))}) ] ) ] ) ) (command.ShFunction name: test_pull_autostash body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(git)} {(reset)} {(--hard)} {(before-rebase)}) (command.Simple words: [{(echo)} {(dirty)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:82) fd: -1 arg_word: {(new_file)} ) ] ) (C {(git)} {(add)} {(new_file)}) (C {(git)} {(pull)} {(DQ ($ Id.VSub_At '$@'))} {(.)} {(copy)}) (C {(test_cmp_rev)} {(HEAD) (Id.Lit_Other '^')} {(copy)}) (C {(test)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:125) command_list: (command.CommandList children:[(C {(cat)} {(new_file)})]) ) ) } {(Id.Lit_Equals '=')} {(dirty)} ) (C {(test)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:142) command_list: (command.CommandList children:[(C {(cat)} {(file)})]) ) ) } {(Id.Lit_Equals '=')} {(DQ ('modified again'))} ) ] ) ] ) ) (command.ShFunction name: test_pull_autostash_fail body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(git)} {(reset)} {(--hard)} {(before-rebase)}) (command.Simple words: [{(echo)} {(dirty)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:181) fd: -1 arg_word: {(new_file)} ) ] ) (C {(git)} {(add)} {(new_file)}) (command.Simple words: [{(test_must_fail)} {(git)} {(pull)} {(DQ ($ Id.VSub_At '$@'))} {(.)} {(copy)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:210) fd: 2 arg_word: {(err)} ) ] ) (C {(test_i18ngrep)} {(DQ ('uncommitted changes.'))} {(err)}) ] ) ] ) ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:232) (Token id:Id.Lit_Chars val:'\techo file >file &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\tgit commit -a -m original\n' span_id:235) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling into void' span_id:242))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:246) (Token id:Id.Lit_Chars val:'\tgit init cloned &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\t(\n' span_id:248) (Token id:Id.Lit_Chars val:'\t\tcd cloned &&\n' span_id:249) (Token id:Id.Lit_Chars val:'\t\tgit pull ..\n' span_id:250) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\ttest -f cloned/file &&\n' span_id:253) (Token id:Id.Lit_Chars val:'\ttest_cmp file cloned/file\n' span_id:254) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling into void using master:master' span_id:261))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id:Id.Lit_Chars val:'\tgit init cloned-uho &&\n' span_id:266) (Token id:Id.Lit_Chars val:'\t(\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\tcd cloned-uho &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\t\tgit pull .. master:master\n' span_id:269) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:270) (Token id:Id.Lit_Chars val:'\ttest -f file &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\ttest -f cloned-uho/file &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\ttest_cmp file cloned-uho/file\n' span_id:273) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pulling into void does not overwrite untracked files' span_id: 280 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:284) (Token id:Id.Lit_Chars val:'\tgit init cloned-untracked &&\n' span_id:285) (Token id:Id.Lit_Chars val:'\t(\n' span_id:286) (Token id:Id.Lit_Chars val:'\t\tcd cloned-untracked &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\techo untracked >file &&\n' span_id:288) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git pull .. master &&\n' span_id: 289 ) (Token id:Id.Lit_Chars val:'\t\techo untracked >expect &&\n' span_id:290) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect file\n' span_id:291) (Token id:Id.Lit_Chars val:'\t)\n' span_id:292) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pulling into void does not overwrite staged files' span_id: 299 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:303) (Token id:Id.Lit_Chars val:'\tgit init cloned-staged-colliding &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\t(\n' span_id:305) (Token id:Id.Lit_Chars val:'\t\tcd cloned-staged-colliding &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\t\techo "alternate content" >file &&\n' span_id:307) (Token id:Id.Lit_Chars val:'\t\tgit add file &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git pull .. master &&\n' span_id:309) (Token id: Id.Lit_Chars val: '\t\techo "alternate content" >expect &&\n' span_id: 310 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect file &&\n' span_id:311) (Token id: Id.Lit_Chars val: '\t\tgit cat-file blob :file >file.index &&\n' span_id: 312 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect file.index\n' span_id:313) (Token id:Id.Lit_Chars val:'\t)\n' span_id:314) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pulling into void does not remove new staged files' span_id: 321 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit init cloned-staged-new &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\t(\n' span_id:327) (Token id:Id.Lit_Chars val:'\t\tcd cloned-staged-new &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\t\techo "new tracked file" >newfile &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\t\tgit add newfile &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\t\tgit pull .. master &&\n' span_id:331) (Token id: Id.Lit_Chars val: '\t\techo "new tracked file" >expect &&\n' span_id: 332 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect newfile &&\n' span_id:333) (Token id: Id.Lit_Chars val: '\t\tgit cat-file blob :newfile >newfile.index &&\n' span_id: 334 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect newfile.index\n' span_id:335) (Token id:Id.Lit_Chars val:'\t)\n' span_id:336) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pulling into void must not create an octopus' span_id:343))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:347) (Token id:Id.Lit_Chars val:'\tgit init cloned-octopus &&\n' span_id:348) (Token id:Id.Lit_Chars val:'\t(\n' span_id:349) (Token id:Id.Lit_Chars val:'\t\tcd cloned-octopus &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git pull .. master master &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\t\t! test -f file\n' span_id:352) (Token id:Id.Lit_Chars val:'\t)\n' span_id:353) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test . as a remote' span_id:360))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) (Token id:Id.Lit_Chars val:'\tgit branch copy master &&\n' span_id:365) (Token id:Id.Lit_Chars val:'\tgit config branch.copy.remote . &&\n' span_id:366) (Token id: Id.Lit_Chars val: '\tgit config branch.copy.merge refs/heads/master &&\n' span_id: 367 ) (Token id:Id.Lit_Chars val:'\techo updated >file &&\n' span_id:368) (Token id:Id.Lit_Chars val:'\tgit commit -a -m updated &&\n' span_id:369) (Token id:Id.Lit_Chars val:'\tgit checkout copy &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit pull &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = updated &&\n' span_id:373) (Token id:Id.Lit_Chars val:'\tgit reflog -1 >reflog.actual &&\n' span_id:374) (Token id: Id.Lit_Chars val: '\tsed "s/^[0-9a-f][0-9a-f]*/OBJID/" reflog.actual >reflog.fuzzy &&\n' span_id: 375 ) (Token id: Id.Lit_Chars val: '\techo "OBJID HEAD@{0}: pull: Fast-forward" >reflog.expected &&\n' span_id: 376 ) (Token id:Id.Lit_Chars val:'\ttest_cmp reflog.expected reflog.fuzzy\n' span_id:377) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'the default remote . should not break explicit pull' span_id: 384 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:388) (Token id:Id.Lit_Chars val:'\tgit checkout -b second master^ &&\n' span_id:389) (Token id:Id.Lit_Chars val:'\techo modified >file &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\tgit commit -a -m modified &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\tgit checkout copy &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\tgit pull . second &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = modified &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\tgit reflog -1 >reflog.actual &&\n' span_id:397) (Token id: Id.Lit_Chars val: '\tsed "s/^[0-9a-f][0-9a-f]*/OBJID/" reflog.actual >reflog.fuzzy &&\n' span_id: 398 ) (Token id: Id.Lit_Chars val: '\techo "OBJID HEAD@{0}: pull . second: Fast-forward" >reflog.expected &&\n' span_id: 399 ) (Token id:Id.Lit_Chars val:'\ttest_cmp reflog.expected reflog.fuzzy\n' span_id:400) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if wildcard spec does not match any refs' span_id:407))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:411) (Token id:Id.Lit_Chars val:'\tgit checkout -b test copy^ &&\n' span_id:412) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D test" &&\n' span_id: 413 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:414) (Token id: Id.Lit_Chars val: '\ttest_must_fail git pull . "refs/nonexisting1/*:refs/nonexisting2/*" 2>err &&\n' span_id: 415 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "no candidates for merging" err &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:417) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fail if no branches specified with non-default remote' span_id: 424 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:428) (Token id:Id.Lit_Chars val:'\tgit remote add test_remote . &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git remote remove test_remote" &&\n' span_id:430) (Token id:Id.Lit_Chars val:'\tgit checkout -b test copy^ &&\n' span_id:431) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D test" &&\n' span_id: 432 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:433) (Token id: Id.Lit_Chars val: '\ttest_config branch.test.remote origin &&\n' span_id: 434 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull test_remote 2>err &&\n' span_id:435) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "specify a branch on the command line" err &&\n' span_id: 436 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:437) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if not on a branch' span_id:444))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:448) (Token id:Id.Lit_Chars val:'\tgit remote add origin . &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git remote remove origin" &&\n' span_id:450) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:451) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git checkout -f copy" &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull 2>err &&\n' span_id:454) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "not currently on a branch" err &&\n' span_id: 455 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:456) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if no configuration for current branch' span_id:463))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:467) (Token id:Id.Lit_Chars val:'\tgit remote add test_remote . &&\n' span_id:468) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git remote remove test_remote" &&\n' span_id:469) (Token id:Id.Lit_Chars val:'\tgit checkout -b test copy^ &&\n' span_id:470) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D test" &&\n' span_id: 471 ) (Token id:Id.Lit_Chars val:'\ttest_config branch.test.remote test_remote &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull 2>err &&\n' span_id:474) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "no tracking information" err &&\n' span_id: 475 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:476) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --all: fail if no configuration for current branch' span_id: 483 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:487) (Token id:Id.Lit_Chars val:'\tgit remote add test_remote . &&\n' span_id:488) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git remote remove test_remote" &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\tgit checkout -b test copy^ &&\n' span_id:490) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D test" &&\n' span_id: 491 ) (Token id:Id.Lit_Chars val:'\ttest_config branch.test.remote test_remote &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull --all 2>err &&\n' span_id:494) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "There is no tracking information" err &&\n' span_id: 495 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:496) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if upstream branch does not exist' span_id:503))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:507) (Token id:Id.Lit_Chars val:'\tgit checkout -b test copy^ &&\n' span_id:508) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D test" &&\n' span_id: 509 ) (Token id:Id.Lit_Chars val:'\ttest_config branch.test.remote . &&\n' span_id:510) (Token id: Id.Lit_Chars val: '\ttest_config branch.test.merge refs/heads/nonexisting &&\n' span_id: 511 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull 2>err &&\n' span_id:513) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "no such ref was fetched" err &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file\n' span_id:515) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if the index has unresolved entries' span_id:522))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:526) (Token id:Id.Lit_Chars val:'\tgit checkout -b third second^ &&\n' span_id:527) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D third" &&\n' span_id: 528 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\ttest_commit modified2 file &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull . second &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\ttest -n "$(git ls-files -u)" &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\tcp file expected &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull . second 2>err &&\n' span_id:535) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Pulling is not possible because you have unmerged files." err &&\n' span_id: 536 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected file &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:538) (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:539) (Token id: Id.Lit_Chars val: '\ttest_must_fail git pull . second 2>err &&\n' span_id: 540 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "You have not concluded your merge" err &&\n' span_id: 541 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected file\n' span_id:542) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fast-forwards working tree if branch head is updated' span_id: 549 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:553) (Token id:Id.Lit_Chars val:'\tgit checkout -b third second^ &&\n' span_id:554) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D third" &&\n' span_id: 555 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:556) (Token id:Id.Lit_Chars val:'\tgit pull . second:third 2>err &&\n' span_id:557) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "fetch updated the current branch head" err &&\n' span_id: 558 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = modified &&\n' span_id:559) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse third)" = "$(git rev-parse second)"\n' span_id: 560 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fast-forward fails with conflicting work tree' span_id:567))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:571) (Token id:Id.Lit_Chars val:'\tgit checkout -b third second^ &&\n' span_id:572) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git checkout -f copy && git branch -D third" &&\n' span_id: 573 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = file &&\n' span_id:574) (Token id:Id.Lit_Chars val:'\techo conflict >file &&\n' span_id:575) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull . second:third 2>err &&\n' span_id:576) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Cannot fast-forward your working tree" err &&\n' span_id: 577 ) (Token id:Id.Lit_Chars val:'\ttest "$(cat file)" = conflict &&\n' span_id:578) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse third)" = "$(git rev-parse second)"\n' span_id: 579 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:--rebase span_id:586))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:590) (Token id:Id.Lit_Chars val:'\tgit branch to-rebase &&\n' span_id:591) (Token id:Id.Lit_Chars val:'\techo modified again > file &&\n' span_id:592) (Token id:Id.Lit_Chars val:'\tgit commit -m file file &&\n' span_id:593) (Token id:Id.Lit_Chars val:'\tgit checkout to-rebase &&\n' span_id:594) (Token id:Id.Lit_Chars val:'\techo new > file2 &&\n' span_id:595) (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:596) (Token id:Id.Lit_Chars val:'\tgit commit -m "new file" &&\n' span_id:597) (Token id:Id.Lit_Chars val:'\tgit tag before-rebase &&\n' span_id:598) (Token id:Id.Lit_Chars val:'\tgit pull --rebase . copy &&\n' span_id:599) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" = "$(git rev-parse copy)" &&\n' span_id: 600 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)"\n' span_id:601) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase with conflicts shows advice' span_id:608))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:612) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rebase --abort; git checkout -f to-rebase" &&\n' span_id: 613 ) (Token id:Id.Lit_Chars val:'\tgit checkout -b seq &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\ttest_seq 5 >seq.txt &&\n' span_id:615) (Token id:Id.Lit_Chars val:'\tgit add seq.txt &&\n' span_id:616) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:617) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add seq.txt" &&\n' span_id:618) (Token id:Id.Lit_Chars val:'\techo 6 >>seq.txt &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:620) (Token id: Id.Lit_Chars val: '\tgit commit -m "Append to seq.txt" seq.txt &&\n' span_id: 621 ) (Token id:Id.Lit_Chars val:'\tgit checkout -b with-conflicts HEAD^ &&\n' span_id:622) (Token id:Id.Lit_Chars val:'\techo conflicting >>seq.txt &&\n' span_id:623) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:624) (Token id: Id.Lit_Chars val: '\tgit commit -m "Create conflict" seq.txt &&\n' span_id: 625 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull --rebase . seq 2>err >out &&\n' span_id:626) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "When you have resolved this problem" out\n' span_id: 627 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'failed --rebase shows advice' span_id:634))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:638) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rebase --abort; git checkout -f to-rebase" &&\n' span_id: 639 ) (Token id:Id.Lit_Chars val:'\tgit checkout -b diverging &&\n' span_id:640) (Token id: Id.Lit_Chars val: '\ttest_commit attributes .gitattributes "* text=auto" attrs &&\n' span_id: 641 ) (Token id: Id.Lit_Chars val: '\tsha1="$(printf "1\\\\r\\\\n" | git hash-object -w --stdin)" &&\n' span_id: 642 ) (Token id:Id.Lit_Chars val:'\tgit update-index --cacheinfo 0644 $sha1 file &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\tgit commit -m v1-with-cr &&\n' span_id:644) (Token id: Id.Lit_Chars val: '\t# force checkout because `git reset --hard` will not leave clean `file`\n' span_id: 645 ) (Token id:Id.Lit_Chars val:'\tgit checkout -f -b fails-to-rebase HEAD^ &&\n' span_id:646) (Token id: Id.Lit_Chars val: '\ttest_commit v2-without-cr file "2" file2-lf &&\n' span_id: 647 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git pull --rebase . diverging 2>err >out &&\n' span_id: 648 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "When you have resolved this problem" out\n' span_id:649) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase fails with multiple branches' span_id:656))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:660) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:661) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull --rebase . copy master 2>err &&\n' span_id:662) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD)" = "$(git rev-parse before-rebase)" &&\n' span_id: 663 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Cannot rebase onto multiple branches" err &&\n' span_id: 664 ) (Token id:Id.Lit_Chars val:'\ttest modified = "$(git show HEAD:file)"\n' span_id:665) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase succeeds with dirty working directory and rebase.autostash set' span_id: 672 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:676) (Token id: Id.Lit_Chars val: '\ttest_config rebase.autostash true &&\n' span_id: 677 ) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash --rebase\n' span_id:678) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --autostash & rebase.autostash=true' span_id: 685 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:689) (Token id: Id.Lit_Chars val: '\ttest_config rebase.autostash true &&\n' span_id: 690 ) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash --rebase --autostash\n' span_id:691) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --autostash & rebase.autostash=false' span_id: 698 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:702) (Token id: Id.Lit_Chars val: '\ttest_config rebase.autostash false &&\n' span_id: 703 ) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash --rebase --autostash\n' span_id:704) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --autostash & rebase.autostash unset' span_id: 711 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:715) (Token id:Id.Lit_Chars val:'\ttest_unconfig rebase.autostash &&\n' span_id:716) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash --rebase --autostash\n' span_id:717) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --no-autostash & rebase.autostash=true' span_id: 724 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:728) (Token id: Id.Lit_Chars val: '\ttest_config rebase.autostash true &&\n' span_id: 729 ) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash_fail --rebase --no-autostash\n' span_id:730) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --no-autostash & rebase.autostash=false' span_id: 737 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:741) (Token id: Id.Lit_Chars val: '\ttest_config rebase.autostash false &&\n' span_id: 742 ) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash_fail --rebase --no-autostash\n' span_id:743) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase --no-autostash & rebase.autostash unset' span_id: 750 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:754) (Token id:Id.Lit_Chars val:'\ttest_unconfig rebase.autostash &&\n' span_id:755) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash_fail --rebase --no-autostash\n' span_id:756) ) } ) (command.ForEach iter_name: i iter_words: [{(--autostash)} {(--no-autostash)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} {(DQ ('pull ') ($ Id.VSub_DollarName '$i') (' (without --rebase) is illegal'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:782) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git pull $i . copy 2>err &&\n' span_id: 783 ) (Token id:Id.Lit_Chars val:'\t\ttest_i18ngrep "only valid with --rebase" err\n' span_id:784) (Token id:Id.Lit_Chars val:'\t' span_id:785) ) } ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:pull.rebase span_id:794))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:798) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:799) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:800) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:801) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" = "$(git rev-parse copy)" &&\n' span_id: 802 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)"\n' span_id:803) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull --autostash & pull.rebase=true' span_id:810))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:814) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:815) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash --autostash\n' span_id:816) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull --no-autostash & pull.rebase=true' span_id:823))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:827) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:828) (Token id:Id.Lit_Chars val:'\ttest_pull_autostash_fail --no-autostash\n' span_id:829) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:branch.to-rebase.rebase span_id:836))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:840) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\ttest_config branch.to-rebase.rebase true &&\n' span_id:842) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:843) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" = "$(git rev-parse copy)" &&\n' span_id: 844 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)"\n' span_id:845) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'branch.to-rebase.rebase should override pull.rebase' span_id: 852 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:856) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:857) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:858) (Token id: Id.Lit_Chars val: '\ttest_config branch.to-rebase.rebase false &&\n' span_id: 859 ) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:860) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" != "$(git rev-parse copy)" &&\n' span_id: 861 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)"\n' span_id:862) ) } ) (C {(test_expect_success)} {(DQ ('pull --rebase warns on --verify-signatures'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:873) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:874) (Token id:Id.Lit_Chars val:'\tgit pull --rebase --verify-signatures . copy 2>err &&\n' span_id:875) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" = "$(git rev-parse copy)" &&\n' span_id: 876 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)" &&\n' span_id:877) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "ignoring --verify-signatures for rebase" err\n' span_id: 878 ) ) } ) (C {(test_expect_success)} {(DQ ('pull --rebase does not warn on --no-verify-signatures'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:889) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:890) (Token id: Id.Lit_Chars val: '\tgit pull --rebase --no-verify-signatures . copy 2>err &&\n' span_id: 891 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^)" = "$(git rev-parse copy)" &&\n' span_id: 892 ) (Token id:Id.Lit_Chars val:'\ttest new = "$(git show HEAD:file2)" &&\n' span_id:893) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep ! "verify-signatures" err\n' span_id: 894 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'preserve merge setup' span_id:910))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:914) (Token id:Id.Lit_Chars val:'\tgit reset --hard before-rebase &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\tgit checkout -b keep-merge second^ &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\ttest_commit file3 &&\n' span_id:917) (Token id:Id.Lit_Chars val:'\tgit checkout to-rebase &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\tgit merge keep-merge &&\n' span_id:919) (Token id:Id.Lit_Chars val:'\tgit tag before-preserve-rebase\n' span_id:920) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull.rebase=false create a new merge commit' span_id:927))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:931) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 932 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase false &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:934) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^1)" = "$(git rev-parse before-preserve-rebase)" &&\n' span_id: 935 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^2)" = "$(git rev-parse copy)" &&\n' span_id: 936 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:937) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull.rebase=true flattens keep-merge' span_id:944))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:948) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 949 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:950) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:951) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 952 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:953) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull.rebase=1 is treated as true and flattens keep-merge' span_id: 960 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:964) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 965 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase 1 &&\n' span_id:966) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:967) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 968 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:969) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull.rebase=preserve rebases and merges keep-merge' span_id: 976 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:980) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 981 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase preserve &&\n' span_id:982) (Token id:Id.Lit_Chars val:'\tgit pull . copy &&\n' span_id:983) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 984 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^2)" = "$(git rev-parse keep-merge)"\n' span_id: 985 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull.rebase=interactive' span_id:992))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:996) (Token id: Id.Lit_Chars val: '\twrite_script "$TRASH_DIRECTORY/fake-editor" <<-\\EOF &&\n' span_id: 997 ) (Token id:Id.Lit_Chars val:'\techo I was here >fake.out &&\n' span_id:998) (Token id:Id.Lit_Chars val:'\tfalse\n' span_id:999) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1000) (Token id: Id.Lit_Chars val: '\ttest_set_editor "$TRASH_DIRECTORY/fake-editor" &&\n' span_id: 1001 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull --rebase=interactive . copy &&\n' span_id:1002) (Token id: Id.Lit_Chars val: '\ttest "I was here" = "$(cat fake.out)"\n' span_id: 1003 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull.rebase=invalid fails' span_id:1010))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1014) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1015 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase invalid &&\n' span_id:1016) (Token id:Id.Lit_Chars val:'\t! git pull . copy\n' span_id:1017) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase=false create a new merge commit' span_id:1024))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1028) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1029 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:1030) (Token id:Id.Lit_Chars val:'\tgit pull --rebase=false . copy &&\n' span_id:1031) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^1)" = "$(git rev-parse before-preserve-rebase)" &&\n' span_id: 1032 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^2)" = "$(git rev-parse copy)" &&\n' span_id: 1033 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:1034) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase=true rebases and flattens keep-merge' span_id:1041))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1045) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1046 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase preserve &&\n' span_id:1047) (Token id:Id.Lit_Chars val:'\tgit pull --rebase=true . copy &&\n' span_id:1048) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 1049 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:1050) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--rebase=preserve rebases and merges keep-merge' span_id: 1057 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1061) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1062 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase true &&\n' span_id:1063) (Token id: Id.Lit_Chars val: '\tgit pull --rebase=preserve . copy &&\n' span_id: 1064 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 1065 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^2)" = "$(git rev-parse keep-merge)"\n' span_id: 1066 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase=invalid fails' span_id:1073))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1077) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1078 ) (Token id:Id.Lit_Chars val:'\t! git pull --rebase=invalid . copy\n' span_id:1079) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--rebase overrides pull.rebase=preserve and flattens keep-merge' span_id: 1086 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1090) (Token id: Id.Lit_Chars val: '\tgit reset --hard before-preserve-rebase &&\n' span_id: 1091 ) (Token id:Id.Lit_Chars val:'\ttest_config pull.rebase preserve &&\n' span_id:1092) (Token id:Id.Lit_Chars val:'\tgit pull --rebase . copy &&\n' span_id:1093) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&\n' span_id: 1094 ) (Token id:Id.Lit_Chars val:'\ttest file3 = "$(git show HEAD:file3.t)"\n' span_id:1095) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase with rebased upstream' span_id:1102))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1106) (Token id:Id.Lit_Chars val:'\n' span_id:1107) (Token id:Id.Lit_Chars val:'\tgit remote add -f me . &&\n' span_id:1108) (Token id:Id.Lit_Chars val:'\tgit checkout copy &&\n' span_id:1109) (Token id:Id.Lit_Chars val:'\tgit tag copy-orig &&\n' span_id:1110) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:1111) (Token id:Id.Lit_Chars val:'\techo conflicting modification > file &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\tgit commit -m conflict file &&\n' span_id:1113) (Token id:Id.Lit_Chars val:'\tgit checkout to-rebase &&\n' span_id:1114) (Token id:Id.Lit_Chars val:'\techo file > file2 &&\n' span_id:1115) (Token id:Id.Lit_Chars val:'\tgit commit -m to-rebase file2 &&\n' span_id:1116) (Token id:Id.Lit_Chars val:'\tgit tag to-rebase-orig &&\n' span_id:1117) (Token id:Id.Lit_Chars val:'\tgit pull --rebase me copy &&\n' span_id:1118) (Token id: Id.Lit_Chars val: '\ttest "conflicting modification" = "$(cat file)" &&\n' span_id: 1119 ) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat file2)"\n' span_id:1120) (Token id:Id.Lit_Chars val:'\n' span_id:1121) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase -f with rebased upstream' span_id:1128))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1132) (Token id: Id.Lit_Chars val: '\ttest_when_finished "test_might_fail git rebase --abort" &&\n' span_id: 1133 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard to-rebase-orig &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\tgit pull --rebase -f me copy &&\n' span_id:1135) (Token id:Id.Lit_Chars val:'\ttest "conflicting modification" = "$(cat file)" &&\n' span_id:1136) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat file2)"\n' span_id:1137) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--rebase with rebased default upstream' span_id:1144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id:Id.Lit_Chars val:'\n' span_id:1149) (Token id:Id.Lit_Chars val:'\tgit update-ref refs/remotes/me/copy copy-orig &&\n' span_id:1150) (Token id: Id.Lit_Chars val: '\tgit checkout --track -b to-rebase2 me/copy &&\n' span_id: 1151 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard to-rebase-orig &&\n' span_id:1152) (Token id:Id.Lit_Chars val:'\tgit pull --rebase &&\n' span_id:1153) (Token id:Id.Lit_Chars val:'\ttest "conflicting modification" = "$(cat file)" &&\n' span_id:1154) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat file2)"\n' span_id:1155) (Token id:Id.Lit_Chars val:'\n' span_id:1156) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rebased upstream + fetch + pull --rebase' span_id:1163))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1167) (Token id:Id.Lit_Chars val:'\n' span_id:1168) (Token id:Id.Lit_Chars val:'\tgit update-ref refs/remotes/me/copy copy-orig &&\n' span_id:1169) (Token id:Id.Lit_Chars val:'\tgit reset --hard to-rebase-orig &&\n' span_id:1170) (Token id:Id.Lit_Chars val:'\tgit checkout --track -b to-rebase3 me/copy &&\n' span_id:1171) (Token id:Id.Lit_Chars val:'\tgit reset --hard to-rebase-orig &&\n' span_id:1172) (Token id:Id.Lit_Chars val:'\tgit fetch &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\tgit pull --rebase &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\ttest "conflicting modification" = "$(cat file)" &&\n' span_id:1175) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat file2)"\n' span_id:1176) (Token id:Id.Lit_Chars val:'\n' span_id:1177) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase dies early with dirty working directory' span_id: 1184 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1188) (Token id:Id.Lit_Chars val:'\n' span_id:1189) (Token id:Id.Lit_Chars val:'\tgit checkout to-rebase &&\n' span_id:1190) (Token id: Id.Lit_Chars val: '\tgit update-ref refs/remotes/me/copy copy^ &&\n' span_id: 1191 ) (Token id:Id.Lit_Chars val:'\tCOPY="$(git rev-parse --verify me/copy)" &&\n' span_id:1192) (Token id:Id.Lit_Chars val:'\tgit rebase --onto $COPY copy &&\n' span_id:1193) (Token id:Id.Lit_Chars val:'\ttest_config branch.to-rebase.remote me &&\n' span_id:1194) (Token id: Id.Lit_Chars val: '\ttest_config branch.to-rebase.merge refs/heads/copy &&\n' span_id: 1195 ) (Token id:Id.Lit_Chars val:'\ttest_config branch.to-rebase.rebase true &&\n' span_id:1196) (Token id:Id.Lit_Chars val:'\techo dirty >> file &&\n' span_id:1197) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1198) (Token id:Id.Lit_Chars val:'\ttest_must_fail git pull &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\ttest "$COPY" = "$(git rev-parse --verify me/copy)" &&\n' span_id:1200) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD -- file &&\n' span_id:1201) (Token id:Id.Lit_Chars val:'\tgit pull &&\n' span_id:1202) (Token id: Id.Lit_Chars val: '\ttest "$COPY" != "$(git rev-parse --verify me/copy)"\n' span_id: 1203 ) (Token id:Id.Lit_Chars val:'\n' span_id:1204) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull --rebase works on branch yet to be born' span_id:1211))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1215) (Token id:Id.Lit_Chars val:'\tgit rev-parse master >expect &&\n' span_id:1216) (Token id:Id.Lit_Chars val:'\tmkdir empty_repo &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\t(cd empty_repo &&\n' span_id:1218) (Token id:Id.Lit_Chars val:'\t git init &&\n' span_id:1219) (Token id:Id.Lit_Chars val:'\t git pull --rebase .. master &&\n' span_id:1220) (Token id:Id.Lit_Chars val:'\t git rev-parse HEAD >../actual\n' span_id:1221) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1222) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1223) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'pull --rebase fails on unborn branch with staged changes' span_id: 1230 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1234) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -rf empty_repo2" &&\n' span_id: 1235 ) (Token id:Id.Lit_Chars val:'\tgit init empty_repo2 &&\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1237) (Token id:Id.Lit_Chars val:'\t\tcd empty_repo2 &&\n' span_id:1238) (Token id:Id.Lit_Chars val:'\t\techo staged-file >staged-file &&\n' span_id:1239) (Token id:Id.Lit_Chars val:'\t\tgit add staged-file &&\n' span_id:1240) (Token id: Id.Lit_Chars val: '\t\ttest "$(git ls-files)" = staged-file &&\n' span_id: 1241 ) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git pull --rebase .. master 2>err &&\n' span_id:1242) (Token id: Id.Lit_Chars val: '\t\ttest "$(git ls-files)" = staged-file &&\n' span_id: 1243 ) (Token id:Id.Lit_Chars val:'\t\ttest "$(git show :staged-file)" = staged-file &&\n' span_id:1244) (Token id: Id.Lit_Chars val: '\t\ttest_i18ngrep "unborn branch with changes added to the index" err\n' span_id: 1245 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1246) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup for detecting upstreamed changes' span_id:1253))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1257) (Token id:Id.Lit_Chars val:'\tmkdir src &&\n' span_id:1258) (Token id:Id.Lit_Chars val:'\t(cd src &&\n' span_id:1259) (Token id:Id.Lit_Chars val:'\t git init &&\n' span_id:1260) (Token id: Id.Lit_Chars val: '\t printf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n10\\n" > stuff &&\n' span_id: 1261 ) (Token id:Id.Lit_Chars val:'\t git add stuff &&\n' span_id:1262) (Token id:Id.Lit_Chars val:'\t git commit -m "Initial revision"\n' span_id:1263) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1264) (Token id:Id.Lit_Chars val:'\tgit clone src dst &&\n' span_id:1265) (Token id:Id.Lit_Chars val:'\t(cd src &&\n' span_id:1266) (Token id:Id.Lit_Chars val:'\t modify s/5/43/ stuff &&\n' span_id:1267) (Token id:Id.Lit_Chars val:'\t git commit -a -m "5->43" &&\n' span_id:1268) (Token id:Id.Lit_Chars val:'\t modify s/6/42/ stuff &&\n' span_id:1269) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Make it bigger"\n' span_id:1270) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1271) (Token id:Id.Lit_Chars val:'\t(cd dst &&\n' span_id:1272) (Token id:Id.Lit_Chars val:'\t modify s/5/43/ stuff &&\n' span_id:1273) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Independent discovery of 5->43"\n' span_id:1274) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1275) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git pull --rebase detects upstreamed changes' span_id:1282))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1286) (Token id:Id.Lit_Chars val:'\t(cd dst &&\n' span_id:1287) (Token id:Id.Lit_Chars val:'\t git pull --rebase &&\n' span_id:1288) (Token id:Id.Lit_Chars val:'\t test -z "$(git ls-files -u)"\n' span_id:1289) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1290) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup for avoiding reapplying old patches' span_id:1297))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1301) (Token id:Id.Lit_Chars val:'\t(cd dst &&\n' span_id:1302) (Token id:Id.Lit_Chars val:'\t test_might_fail git rebase --abort &&\n' span_id:1303) (Token id:Id.Lit_Chars val:'\t git reset --hard origin/master\n' span_id:1304) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1305) (Token id: Id.Lit_Chars val: '\tgit clone --bare src src-replace.git &&\n' span_id: 1306 ) (Token id:Id.Lit_Chars val:'\trm -rf src &&\n' span_id:1307) (Token id:Id.Lit_Chars val:'\tmv src-replace.git src &&\n' span_id:1308) (Token id:Id.Lit_Chars val:'\t(cd dst &&\n' span_id:1309) (Token id:Id.Lit_Chars val:'\t modify s/2/22/ stuff &&\n' span_id:1310) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Change 2" &&\n' span_id:1311) (Token id:Id.Lit_Chars val:'\t modify s/3/33/ stuff &&\n' span_id:1312) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Change 3" &&\n' span_id:1313) (Token id:Id.Lit_Chars val:'\t modify s/4/44/ stuff &&\n' span_id:1314) (Token id:Id.Lit_Chars val:'\t git commit -a -m "Change 4" &&\n' span_id:1315) (Token id:Id.Lit_Chars val:'\t git push &&\n' span_id:1316) (Token id:Id.Lit_Chars val:'\n' span_id:1317) (Token id:Id.Lit_Chars val:'\t modify s/44/55/ stuff &&\n' span_id:1318) (Token id:Id.Lit_Chars val:'\t git commit --amend -a -m "Modified Change 4"\n' span_id:1319) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1320) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git pull --rebase does not reapply old patches' span_id:1327))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1331) (Token id:Id.Lit_Chars val:'\t(cd dst &&\n' span_id:1332) (Token id:Id.Lit_Chars val:'\t test_must_fail git pull --rebase &&\n' span_id:1333) (Token id: Id.Lit_Chars val: '\t test 1 = $(find .git/rebase-apply -name "000*" | wc -l)\n' span_id: 1334 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1335) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git pull --rebase against local branch' span_id:1342))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1346) (Token id: Id.Lit_Chars val: '\tgit checkout -b copy2 to-rebase-orig &&\n' span_id: 1347 ) (Token id:Id.Lit_Chars val:'\tgit pull --rebase . to-rebase &&\n' span_id:1348) (Token id: Id.Lit_Chars val: '\ttest "conflicting modification" = "$(cat file)" &&\n' span_id: 1349 ) (Token id:Id.Lit_Chars val:'\ttest file = "$(cat file2)"\n' span_id:1350) ) } ) (C {(test_done)}) ] )