(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description) op: assign_op.Equal rhs: {(SQ <'basic rebase topology tests'>)} spids: [4] ) ] redirects: [] ) (C {<.>} {<'./test-lib.sh'>}) (C {<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-rebase.sh'>}) (C {<test_expect_success>} {(SQ <setup>)} { (SQ <'\n'> <'\ttest_commit a &&\n'> <'\ttest_commit b &&\n'> <'\ttest_commit c &&\n'> <'\tgit checkout b &&\n'> <'\ttest_commit d &&\n'> <'\ttest_commit e\n'> ) } ) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [55] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'simple rebase '> ($ Id.VSub_Star '*'))} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' c e &&\n'> <'\t\ttest_cmp_rev c HEAD~2 &&\n'> <'\t\ttest_linear_range \'d e\' c..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [117] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' is no-op if upstream is an ancestor'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' b e &&\n'> <'\t\ttest_cmp_rev e HEAD\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [179] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' -f rewrites even if upstream is an ancestor'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' -f b e &&\n'> <'\t\t! test_cmp_rev e HEAD &&\n'> <'\t\ttest_cmp_rev b HEAD~2 &&\n'> <'\t\ttest_linear_range \'d e\' b..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [243] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' fast-forwards from ancestor of upstream'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' e b &&\n'> <'\t\ttest_cmp_rev e HEAD\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (C {<test_expect_success>} {(SQ <'setup of linear history for range selection tests'>)} { (SQ <'\n'> <'\tgit checkout c &&\n'> <'\ttest_commit g &&\n'> <'\trevert h g &&\n'> <'\tgit checkout d &&\n'> <'\tcherry_pick gp g &&\n'> <'\ttest_commit i &&\n'> <'\tgit checkout b &&\n'> <'\ttest_commit f\n'> ) } ) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [366] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' drops patches in upstream'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' h i &&\n'> <'\t\ttest_cmp_rev h HEAD~2 &&\n'> <'\t\ttest_linear_range \'d i\' h..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [429] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' can drop last patch if in upstream'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' h gp &&\n'> <'\t\ttest_cmp_rev h HEAD^ &&\n'> <'\t\ttest_linear_range \'d\' h..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [492] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --onto drops patches in upstream'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --onto f h i &&\n'> <'\t\ttest_cmp_rev f HEAD~2 &&\n'> <'\t\ttest_linear_range \'d i\' f..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [555] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --onto does not drop patches in onto'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --onto h f i &&\n'> <'\t\ttest_cmp_rev h HEAD~3 &&\n'> <'\t\ttest_linear_range \'d gp i\' h..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (C {<test_expect_success>} {(SQ <'setup of linear history for empty commit tests'>)} { (SQ <'\n'> <'\tgit checkout c &&\n'> <'\tmake_empty j &&\n'> <'\tgit checkout d &&\n'> <'\tmake_empty k &&\n'> <'\ttest_commit l\n'> ) } ) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [649] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' drops empty commit'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' c l &&\n'> <'\t\ttest_cmp_rev c HEAD~2 &&\n'> <'\t\ttest_linear_range \'d l\' c..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [712] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --keep-empty'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --keep-empty c l &&\n'> <'\t\ttest_cmp_rev c HEAD~3 &&\n'> <'\t\ttest_linear_range \'d k l\' c..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [775] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} { (DQ <'rebase '> ($ Id.VSub_Star '*') <' --keep-empty keeps empty even if already in upstream'> ) } { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --keep-empty j l &&\n'> <'\t\ttest_cmp_rev j HEAD~3 &&\n'> <'\t\ttest_linear_range \'d k l\' j..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<failure>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (C {<test_expect_success>} {(SQ <'setup of linear history for test involving root'>)} { (SQ <'\n'> <'\tgit checkout b &&\n'> <'\trevert m b &&\n'> <'\tgit checkout --orphan disjoint &&\n'> <'\tgit rm -rf . &&\n'> <'\ttest_commit x &&\n'> <'\ttest_commit y &&\n'> <'\tcherry_pick bp b\n'> ) } ) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [898] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --onto --root'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --onto c --root y &&\n'> <'\t\ttest_cmp_rev c HEAD~2 &&\n'> <'\t\ttest_linear_range \'x y\' c..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [961] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' without --onto --root with disjoint history'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' c y &&\n'> <'\t\ttest_cmp_rev c HEAD~2 &&\n'> <'\t\ttest_linear_range \'x y\' c..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1024] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --onto --root drops patch in onto'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --onto m --root bp &&\n'> <'\t\ttest_cmp_rev m HEAD~2 &&\n'> <'\t\ttest_linear_range \'x y\' m..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1087] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} { (DQ <'rebase '> ($ Id.VSub_Star '*') <' --onto --root with merge-base does not go to root'> ) } { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --onto m --root g &&\n'> <'\t\ttest_cmp_rev m HEAD~2 &&\n'> <'\t\ttest_linear_range \'c g\' m..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1151] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} { (DQ <'rebase '> ($ Id.VSub_Star '*') <' without --onto --root with disjoint history drops patch in onto'> ) } { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' m bp &&\n'> <'\t\ttest_cmp_rev m HEAD~2 &&\n'> <'\t\ttest_linear_range \'x y\' m..\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1214] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' --root on linear history is a no-op'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' --root c &&\n'> <'\t\ttest_cmp_rev c HEAD\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<failure>} {(SQ )}) (C {<test_run_rebase>} {<failure>} {<-m>}) (C {<test_run_rebase>} {<failure>} {<-i>}) (C {<test_run_rebase>} {<failure>} {<-p>}) (command.ShFunction name: test_run_rebase body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'result='> name:result) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1276] ) ] redirects: [] ) (C {<shift>}) (C {<test_expect_> ($ Id.VSub_DollarName result)} {(DQ <'rebase '> ($ Id.VSub_Star '*') <' -f --root on linear history causes re-write'>)} { (DQ <'\n'> <'\t\treset_rebase &&\n'> <'\t\tgit rebase '> ($ Id.VSub_Star '*') <' -f --root c &&\n'> <'\t\t! test_cmp_rev a HEAD~2 &&\n'> <'\t\ttest_linear_range \'a b c\' HEAD\n'> <'\t'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<test_run_rebase>} {<success>} {(SQ )}) (C {<test_run_rebase>} {<success>} {<-m>}) (C {<test_run_rebase>} {<success>} {<-i>}) (C {<test_run_rebase>} {<success>} {<-p>}) (C {<test_done>}) ] )