(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'git remote porcelain-ish'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: setup_repository body: (BraceGroup children: [ (AndOr children: [ (C {(mkdir)} {(DQ ($ VSub_Number '$1'))}) (Subshell child: (AndOr children: [ (C {(cd)} {(DQ ($ VSub_Number '$1'))}) (AndOr children: [ (C {(git)} {(init)}) (AndOr children: [ (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(file)} spids: [50] ) ] ) (AndOr children: [ (C {(git)} {(add)} {(file)}) (AndOr children: [ (C {(test_tick)}) (AndOr children: [ (C {(git)} {(commit)} {(-m)} {(DQ (Initial))}) (AndOr children: [ (C {(git)} {(checkout)} {(-b)} {(side)}) (AndOr children: [ (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(KW_Elif elif)} spids: [94] ) ] ) (AndOr children: [ (C {(git)} {(add)} {(KW_Elif elif)}) (AndOr children: [ (C {(test_tick)}) (AndOr children: [ (C {(git)} {(commit)} {(-m)} {(DQ (Second))} ) (C {(git)} {(checkout)} {(master)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) spids: [31 134] ) ] op_id: Op_DAmp ) ] spids: [20] ) spids: [15 19] ) (FuncDef name: tokens_match body: (BraceGroup children: [ (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {(tr)} {(SQ <' '>)} {(SQ <'\\012'>)}) (C {(sort)}) (SimpleCommand words: [{(sed)} {(-e)} {(SQ <'/^$/d'>)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[179])] ) ] negated: False ) (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$2'))}) (C {(tr)} {(SQ <' '>)} {(SQ <'\\012'>)}) (C {(sort)}) (SimpleCommand words: [{(sed)} {(-e)} {(SQ <'/^$/d'>)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(actual)} spids:[217])] ) ] negated: False ) (C {(test_cmp)} {(expect)} {(actual)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [144] ) spids: [139 143] ) (FuncDef name: check_remote_track body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:actual) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(git)} {(remote)} {(show)} {(DQ ($ VSub_Number '$1'))}) (C {(sed)} {(-ne)} {(SQ <'s|^ \\(.*\\) tracked$|\\1|p'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [241 261] ) } spids: [240] ) ] spids: [240] ) (AndOr children: [ (C {(shift)}) (C {(tokens_match)} {(DQ ($ VSub_Star '$*'))} {(DQ ($ VSub_Name '$actual'))}) ] op_id: Op_DAmp ) ] spids: [237] ) spids: [232 236] ) (FuncDef name: check_tracking_branch body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:f) op:Equal rhs:{(DQ )} spids:[290])] spids: [290] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(git)} {(for-each-ref)} {(DQ ('--format=%(refname)'))}) (C {(sed)} {(-ne)} {(DQ ('s|^refs/remotes/') ($ VSub_Number '$1') ('/||p'))} ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [298 319] ) } spids: [297] ) ] spids: [297] ) (AndOr children: [ (C {(shift)}) (C {(tokens_match)} {(DQ ($ VSub_Star '$*'))} {(DQ ($ VSub_Name '$r'))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [287] ) spids: [282 286] ) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\tsetup_repository one &&\n'> <'\tsetup_repository two &&\n'> <'\t(\n'> <'\t\tcd two &&\n'> <'\t\tgit branch another\n'> <'\t) &&\n'> <'\tgit clone one test\n'> ) } ) (C {(test_expect_success)} {(SQ <'add remote whose URL agrees with url.<...>.insteadOf'>)} { (SQ <'\n'> <'\ttest_config url.git@host.com:team/repo.git.insteadOf myremote &&\n'> <'\tgit remote add myremote git@host.com:team/repo.git\n'> ) } ) (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} {(SQ <'remote information for the origin'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\ttokens_match origin "$(git remote)" &&\n'> <'\t\tcheck_remote_track origin master side &&\n'> <'\t\tcheck_tracking_branch origin HEAD master side\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add another remote'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote add -f second ../two &&\n'> <'\t\ttokens_match "origin second" "$(git remote)" &&\n'> <'\t\tcheck_tracking_branch second master side another &&\n'> <'\t\tgit for-each-ref "--format=%(refname)" refs/remotes |\n'> <'\t\tsed -e "/^refs\\/remotes\\/origin\\//d" \\\n'> <'\t\t -e "/^refs\\/remotes\\/second\\//d" >actual &&\n'> <'\t\t>expect &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} {(SQ <'check remote-tracking'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tcheck_remote_track origin master side &&\n'> <'\t\tcheck_remote_track second master side another\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote forces tracking branches'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tcase $(git config remote.second.fetch) in\n'> <'\t\t+*) true ;;\n'> <'\t\t *) false ;;\n'> <'\t\tesac\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remove remote'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit symbolic-ref refs/remotes/second/HEAD refs/remotes/second/master &&\n'> <'\t\tgit remote rm second\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} {(SQ <'remove remote'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\ttokens_match origin "$(git remote)" &&\n'> <'\t\tcheck_remote_track origin master side &&\n'> <'\t\tgit for-each-ref "--format=%(refname)" refs/remotes |\n'> <'\t\tsed -e "/^refs\\/remotes\\/origin\\//d" >actual &&\n'> <'\t\t>expect &&\n'> <'\t\ttest_cmp expect actual\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remove remote protects local branches'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tcat >expect1 <<-\\EOF &&\n'> <'\t\tNote: A branch outside the refs/remotes/ hierarchy was not removed;\n'> <'\t\tto delete it, use:\n'> <'\t\t git branch -d master\n'> <'\t\tEOF\n'> <'\t\tcat >expect2 <<-\\EOF &&\n'> <'\t\tNote: Some branches outside the refs/remotes/ hierarchy were not removed;\n'> <'\t\tto delete them, use:\n'> <'\t\t git branch -d foobranch\n'> <'\t\t git branch -d master\n'> <'\t\tEOF\n'> <'\t\tgit tag footag &&\n'> <'\t\tgit config --add remote.oops.fetch "+refs/*:refs/*" &&\n'> <'\t\tgit remote remove oops 2>actual1 &&\n'> <'\t\tgit branch foobranch &&\n'> <'\t\tgit config --add remote.oops.fetch "+refs/*:refs/*" &&\n'> <'\t\tgit remote rm oops 2>actual2 &&\n'> <'\t\tgit branch -d foobranch &&\n'> <'\t\tgit tag -d footag &&\n'> <'\t\ttest_i18ncmp expect1 actual1 &&\n'> <'\t\ttest_i18ncmp expect2 actual2\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remove errors out early when deleting non-existent branch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\techo "fatal: No such remote: foo" >expect &&\n'> <'\t\ttest_must_fail git remote rm foo 2>actual &&\n'> <'\t\ttest_i18ncmp expect actual\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rename errors out early when deleting non-existent branch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\techo "fatal: No such remote: foo" >expect &&\n'> <'\t\ttest_must_fail git remote rename foo bar 2>actual &&\n'> <'\t\ttest_i18ncmp expect actual\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add existing foreign_vcs remote'>)} { (SQ <'\n'> <'\ttest_config remote.foo.vcs bar &&\n'> <'\techo "fatal: remote foo already exists." >expect &&\n'> <'\ttest_must_fail git remote add foo bar 2>actual &&\n'> <'\ttest_i18ncmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'add existing foreign_vcs remote'>)} { (SQ <'\n'> <'\ttest_config remote.foo.vcs bar &&\n'> <'\ttest_config remote.bar.vcs bar &&\n'> <'\techo "fatal: remote bar already exists." >expect &&\n'> <'\ttest_must_fail git remote rename foo bar 2>actual &&\n'> <'\ttest_i18ncmp expect actual\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[588]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('* remote origin\n') (' Fetch URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [596 598] ) ('/one\n') (' Push URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [601 603] ) ('/one\n') (' HEAD branch: master\n') (' Remote branches:\n') (' master new (next fetch will store in remotes/origin)\n') (' side tracked\n') (" Local branches configured for 'git pull':\n") (' ahead merges with remote master\n') (' master merges with remote master\n') (' octopus merges with remote topic-a\n') (' and with remote topic-b\n') (' and with remote topic-c\n') (' rebase rebases onto remote master\n') (" Local refs configured for 'git push':\n") (' master pushes to master (local out of date)\n') (' master pushes to upstream (create)\n') ('* remote two\n') (' Fetch URL: ../two\n') (' Push URL: ../three\n') (' HEAD branch: master\n') (" Local refs configured for 'git push':\n") (' ahead forces to master (fast-forwardable)\n') (' master pushes to another (up to date)\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [591] ) ] ) (C {(test_expect_success)} {(SQ <show>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit config --add remote.origin.fetch refs/heads/master:refs/heads/upstream &&\n'> <'\t\tgit fetch &&\n'> <'\t\tgit checkout -b ahead origin/master &&\n'> <'\t\techo 1 >>file &&\n'> <'\t\ttest_tick &&\n'> <'\t\tgit commit -m update file &&\n'> <'\t\tgit checkout master &&\n'> <'\t\tgit branch --track octopus origin/master &&\n'> <'\t\tgit branch --track rebase origin/master &&\n'> <'\t\tgit branch -d -r origin/master &&\n'> <'\t\tgit config --add remote.two.url ../two &&\n'> <'\t\tgit config --add remote.two.pushurl ../three &&\n'> <'\t\tgit config branch.rebase.rebase true &&\n'> <'\t\tgit config branch.octopus.merge "topic-a topic-b topic-c" &&\n'> <'\t\t(\n'> <'\t\t\tcd ../one &&\n'> <'\t\t\techo 1 >file &&\n'> <'\t\t\ttest_tick &&\n'> <'\t\t\tgit commit -m update file\n'> <'\t\t) &&\n'> <'\t\tgit config --add remote.origin.push : &&\n'> <'\t\tgit config --add remote.origin.push refs/heads/master:refs/heads/upstream &&\n'> <'\t\tgit config --add remote.origin.push +refs/tags/lastbackup &&\n'> <'\t\tgit config --add remote.two.push +refs/heads/ahead:refs/heads/master &&\n'> <'\t\tgit config --add remote.two.push refs/heads/master:refs/heads/another &&\n'> <'\t\tgit remote show origin two >output &&\n'> <'\t\tgit branch -d rebase octopus &&\n'> <'\t\ttest_i18ncmp expect output\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[672]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('* remote origin\n') (' Fetch URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [680 682] ) ('/one\n') (' Push URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [685 687] ) ('/one\n') (' HEAD branch: (not queried)\n') (' Remote branches: (status not queried)\n') (' master\n') (' side\n') (" Local branches configured for 'git pull':\n") (' ahead merges with remote master\n') (' master merges with remote master\n') (" Local refs configured for 'git push' (status not queried):\n") (' (matching) pushes to (matching)\n') (' refs/heads/master pushes to refs/heads/upstream\n') (' refs/tags/lastbackup forces to refs/tags/lastbackup\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [675] ) ] ) (C {(test_expect_success)} {(SQ <'show -n'>)} { (SQ <'\n'> <'\tmv one one.unreachable &&\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote show -n origin >output &&\n'> <'\t\tmv ../one.unreachable ../one &&\n'> <'\t\ttest_i18ncmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <prune>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit branch -m side side2\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit fetch origin &&\n'> <'\t\tgit remote prune origin &&\n'> <'\t\tgit rev-parse refs/remotes/origin/side2 &&\n'> <'\t\ttest_must_fail git rev-parse refs/remotes/origin/side\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'set-head --delete'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit symbolic-ref refs/remotes/origin/HEAD &&\n'> <'\t\tgit remote set-head --delete origin &&\n'> <'\t\ttest_must_fail git symbolic-ref refs/remotes/origin/HEAD\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'set-head --auto'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote set-head --auto origin &&\n'> <'\t\techo refs/remotes/origin/master >expect &&\n'> <'\t\tgit symbolic-ref refs/remotes/origin/HEAD >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'set-head --auto has no problem w/multiple HEADs'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit fetch two "refs/heads/*:refs/remotes/two/*" &&\n'> <'\t\tgit remote set-head --auto two >output 2>&1 &&\n'> <'\t\techo "two/HEAD set to master" >expect &&\n'> <'\t\ttest_i18ncmp expect output\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[797]) (HereDoc op_id: Redir_DLess fd: -1 body: {('refs/remotes/origin/side2\n')} do_expansion: False here_end: EOF was_filled: True spids: [800] ) ] ) (C {(test_expect_success)} {(SQ <'set-head explicit'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote set-head origin side2 &&\n'> <'\t\tgit symbolic-ref refs/remotes/origin/HEAD >output &&\n'> <'\t\tgit remote set-head origin master &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[825]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('Pruning origin\n') ('URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [833 835] ) ('/one\n') (' * [would prune] origin/side2\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [828] ) ] ) (C {(test_expect_success)} {(SQ <'prune --dry-run'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit branch -m side2 side) &&\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote prune --dry-run origin >output &&\n'> <'\t\tgit rev-parse refs/remotes/origin/side2 &&\n'> <'\t\ttest_must_fail git rev-parse refs/remotes/origin/side &&\n'> <'\t(\n'> <'\t\tcd ../one &&\n'> <'\t\tgit branch -m side side2) &&\n'> <'\t\ttest_i18ncmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add --mirror && prune'>)} { (SQ <'\n'> <'\tmkdir mirror &&\n'> <'\t(\n'> <'\t\tcd mirror &&\n'> <'\t\tgit init --bare &&\n'> <'\t\tgit remote add --mirror -f origin ../one\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit branch -m side2 side\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror &&\n'> <'\t\tgit rev-parse --verify refs/heads/side2 &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/side &&\n'> <'\t\tgit fetch origin &&\n'> <'\t\tgit remote prune origin &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/side2 &&\n'> <'\t\tgit rev-parse --verify refs/heads/side\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add --mirror=fetch'>)} { (SQ <'\n'> <'\tmkdir mirror-fetch &&\n'> <'\tgit init mirror-fetch/parent &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/parent &&\n'> <'\t\ttest_commit one\n'> <'\t) &&\n'> <'\tgit init --bare mirror-fetch/child &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/child &&\n'> <'\t\tgit remote add --mirror=fetch -f parent ../parent\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'fetch mirrors act as mirrors during fetch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-fetch/parent &&\n'> <'\t\tgit branch new &&\n'> <'\t\tgit branch -m master renamed\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/child &&\n'> <'\t\tgit fetch parent &&\n'> <'\t\tgit rev-parse --verify refs/heads/new &&\n'> <'\t\tgit rev-parse --verify refs/heads/renamed\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'fetch mirrors can prune'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-fetch/child &&\n'> <'\t\tgit remote prune parent &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/master\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'fetch mirrors do not act as mirrors during push'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-fetch/parent &&\n'> <'\t\tgit checkout HEAD^0\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/child &&\n'> <'\t\tgit branch -m renamed renamed2 &&\n'> <'\t\tgit push parent :\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/parent &&\n'> <'\t\tgit rev-parse --verify renamed &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/renamed2\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add fetch mirror with specific branches'>)} { (SQ <'\n'> <'\tgit init --bare mirror-fetch/track &&\n'> <'\t(\n'> <'\t\tcd mirror-fetch/track &&\n'> <'\t\tgit remote add --mirror=fetch -t heads/new parent ../parent\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'fetch mirror respects specific branches'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-fetch/track &&\n'> <'\t\tgit fetch parent &&\n'> <'\t\tgit rev-parse --verify refs/heads/new &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/renamed\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add --mirror=push'>)} { (SQ <'\n'> <'\tmkdir mirror-push &&\n'> <'\tgit init --bare mirror-push/public &&\n'> <'\tgit init mirror-push/private &&\n'> <'\t(\n'> <'\t\tcd mirror-push/private &&\n'> <'\t\ttest_commit one &&\n'> <'\t\tgit remote add --mirror=push public ../public\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'push mirrors act as mirrors during push'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-push/private &&\n'> <'\t\tgit branch new &&\n'> <'\t\tgit branch -m master renamed &&\n'> <'\t\tgit push public\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror-push/private &&\n'> <'\t\tgit rev-parse --verify refs/heads/new &&\n'> <'\t\tgit rev-parse --verify refs/heads/renamed &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/master\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'push mirrors do not act as mirrors during fetch'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd mirror-push/public &&\n'> <'\t\tgit branch -m renamed renamed2 &&\n'> <'\t\tgit symbolic-ref HEAD refs/heads/renamed2\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd mirror-push/private &&\n'> <'\t\tgit fetch public &&\n'> <'\t\tgit rev-parse --verify refs/heads/renamed &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/heads/renamed2\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'push mirrors do not allow you to specify refs'>)} { (SQ <'\n'> <'\tgit init mirror-push/track &&\n'> <'\t(\n'> <'\t\tcd mirror-push/track &&\n'> <'\t\ttest_must_fail git remote add --mirror=push -t new public ../public\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'add alt && prune'>)} { (SQ <'\n'> <'\tmkdir alttst &&\n'> <'\t(\n'> <'\t\tcd alttst &&\n'> <'\t\tgit init &&\n'> <'\t\tgit remote add -f origin ../one &&\n'> <'\t\tgit config remote.alt.url ../one &&\n'> <'\t\tgit config remote.alt.fetch "+refs/heads/*:refs/remotes/origin/*"\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit branch -m side side2\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd alttst &&\n'> <'\t\tgit rev-parse --verify refs/remotes/origin/side &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/remotes/origin/side2 &&\n'> <'\t\tgit fetch alt &&\n'> <'\t\tgit remote prune alt &&\n'> <'\t\ttest_must_fail git rev-parse --verify refs/remotes/origin/side &&\n'> <'\t\tgit rev-parse --verify refs/remotes/origin/side2\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[1126]) (HereDoc op_id: Redir_DLess fd: -1 body: {('some-tag\n')} do_expansion: False here_end: EOF was_filled: True spids: [1129] ) ] ) (C {(test_expect_success)} {(SQ <'add with reachable tags (default)'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\t>foobar &&\n'> <'\t\tgit add foobar &&\n'> <'\t\tgit commit -m "Foobar" &&\n'> <'\t\tgit tag -a -m "Foobar tag" foobar-tag &&\n'> <'\t\tgit reset --hard HEAD~1 &&\n'> <'\t\tgit tag -a -m "Some tag" some-tag\n'> <'\t) &&\n'> <'\tmkdir add-tags &&\n'> <'\t(\n'> <'\t\tcd add-tags &&\n'> <'\t\tgit init &&\n'> <'\t\tgit remote add -f origin ../one &&\n'> <'\t\tgit tag -l some-tag >../test/output &&\n'> <'\t\tgit tag -l foobar-tag >>../test/output &&\n'> <'\t\ttest_must_fail git config remote.origin.tagopt\n'> <'\t) &&\n'> <'\ttest_cmp test/expect test/output\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[1166]) (HereDoc op_id: Redir_DLess fd: -1 body: {('some-tag\n') ('foobar-tag\n') ('--tags\n')} do_expansion: False here_end: EOF was_filled: True spids: [1169] ) ] ) (C {(test_expect_success)} {(SQ <'add --tags'>)} { (SQ <'\n'> <'\trm -rf add-tags &&\n'> <'\t(\n'> <'\t\tmkdir add-tags &&\n'> <'\t\tcd add-tags &&\n'> <'\t\tgit init &&\n'> <'\t\tgit remote add -f --tags origin ../one &&\n'> <'\t\tgit tag -l some-tag >../test/output &&\n'> <'\t\tgit tag -l foobar-tag >>../test/output &&\n'> <'\t\tgit config remote.origin.tagopt >>../test/output\n'> <'\t) &&\n'> <'\ttest_cmp test/expect test/output\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(test/expect)} spids:[1198]) (HereDoc op_id: Redir_DLess fd: -1 body: {('--no-tags\n')} do_expansion: False here_end: EOF was_filled: True spids: [1201] ) ] ) (C {(test_expect_success)} {(SQ <'add --no-tags'>)} { (SQ <'\n'> <'\trm -rf add-tags &&\n'> <'\t(\n'> <'\t\tmkdir add-no-tags &&\n'> <'\t\tcd add-no-tags &&\n'> <'\t\tgit init &&\n'> <'\t\tgit remote add -f --no-tags origin ../one &&\n'> <'\t\tgit tag -l some-tag >../test/output &&\n'> <'\t\tgit tag -l foobar-tag >../test/output &&\n'> <'\t\tgit config remote.origin.tagopt >>../test/output\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit tag -d some-tag foobar-tag\n'> <'\t) &&\n'> <'\ttest_cmp test/expect test/output\n'> ) } ) (C {(test_expect_success)} {(SQ <'reject --no-no-tags'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd add-no-tags &&\n'> <'\t\ttest_must_fail git remote add -f --no-no-tags neworigin ../one\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(one/expect)} spids:[1249]) (HereDoc op_id: Redir_DLess fd: -1 body: {(' apis/master\n') (' apis/side\n') (' drosophila/another\n') (' drosophila/master\n') (' drosophila/side\n') } do_expansion: False here_end: EOF was_filled: True spids: [1252] ) ] ) (C {(test_expect_success)} {(SQ <update>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit remote add drosophila ../two &&\n'> <'\t\tgit remote add apis ../mirror &&\n'> <'\t\tgit remote update &&\n'> <'\t\tgit branch -r >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(one/expect)} spids:[1278]) (HereDoc op_id: Redir_DLess fd: -1 body: {(' drosophila/another\n') (' drosophila/master\n') (' drosophila/side\n') (' manduca/master\n') (' manduca/side\n') (' megaloprepus/master\n') (' megaloprepus/side\n') } do_expansion: False here_end: EOF was_filled: True spids: [1281] ) ] ) (C {(test_expect_success)} {(SQ <'update with arguments'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tfor b in $(git branch -r)\n'> <'\t\tdo\n'> <'\t\tgit branch -r -d $b || exit 1\n'> <'\t\tdone &&\n'> <'\t\tgit remote add manduca ../mirror &&\n'> <'\t\tgit remote add megaloprepus ../mirror &&\n'> <'\t\tgit config remotes.phobaeticus "drosophila megaloprepus" &&\n'> <'\t\tgit config remotes.titanus manduca &&\n'> <'\t\tgit remote update phobaeticus titanus &&\n'> <'\t\tgit branch -r >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'update --prune'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit branch -m side2 side3\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd test &&\n'> <'\t\tgit remote update --prune &&\n'> <'\t\t(\n'> <'\t\t\tcd ../one &&\n'> <'\t\t\tgit branch -m side3 side2\n'> <'\t\t) &&\n'> <'\t\tgit rev-parse refs/remotes/origin/side3 &&\n'> <'\t\ttest_must_fail git rev-parse refs/remotes/origin/side2\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(one/expect)} spids:[1338]) (HereDoc op_id: Redir_DLessDash fd: -1 body: {(' apis/master\n') (' apis/side\n') (' manduca/master\n') (' manduca/side\n') (' megaloprepus/master\n') (' megaloprepus/side\n') } do_expansion: False here_end: EOF was_filled: True spids: [1341] ) ] ) (C {(test_expect_success)} {(SQ <'update default'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tfor b in $(git branch -r)\n'> <'\t\tdo\n'> <'\t\tgit branch -r -d $b || exit 1\n'> <'\t\tdone &&\n'> <'\t\tgit config remote.drosophila.skipDefaultUpdate true &&\n'> <'\t\tgit remote update default &&\n'> <'\t\tgit branch -r >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(one/expect)} spids:[1370]) (HereDoc op_id: Redir_DLess fd: -1 body: {(' drosophila/another\n') (' drosophila/master\n') (' drosophila/side\n')} do_expansion: False here_end: EOF was_filled: True spids: [1373] ) ] ) (C {(test_expect_success)} {(SQ <'update default (overridden, with funny whitespace)'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tfor b in $(git branch -r)\n'> <'\t\tdo\n'> <'\t\tgit branch -r -d $b || exit 1\n'> <'\t\tdone &&\n'> <'\t\tgit config remotes.default "$(printf "\\t drosophila \\n")" &&\n'> <'\t\tgit remote update default &&\n'> <'\t\tgit branch -r >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'update (with remotes.default defined)'>)} { (SQ <'\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tfor b in $(git branch -r)\n'> <'\t\tdo\n'> <'\t\tgit branch -r -d $b || exit 1\n'> <'\t\tdone &&\n'> <'\t\tgit config remotes.default "drosophila" &&\n'> <'\t\tgit remote update &&\n'> <'\t\tgit branch -r >output &&\n'> <'\t\ttest_cmp expect output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'"remote show" does not show symbolic refs'>)} { (SQ <'\n'> <'\tgit clone one three &&\n'> <'\t(\n'> <'\t\tcd three &&\n'> <'\t\tgit remote show origin >output &&\n'> <'\t\t! grep "^ *HEAD$" < output &&\n'> <'\t\t! grep -i stale < output\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'reject adding remote with an invalid name'>)} {(SQ <'\n'> <'\ttest_must_fail git remote add some:url desired-name\n'>)} ) (C {(test_expect_success)} {(SQ <'rename a remote'>)} { (SQ <'\n'> <'\tgit clone one four &&\n'> <'\t(\n'> <'\t\tcd four &&\n'> <'\t\tgit remote rename origin upstream &&\n'> <'\t\trmdir .git/refs/remotes/origin &&\n'> < '\t\ttest "$(git symbolic-ref refs/remotes/upstream/HEAD)" = "refs/remotes/upstream/master" &&\n' > <'\t\ttest "$(git rev-parse upstream/master)" = "$(git rev-parse master)" &&\n'> < '\t\ttest "$(git config remote.upstream.fetch)" = "+refs/heads/*:refs/remotes/upstream/*" &&\n' > <'\t\ttest "$(git config branch.master.remote)" = "upstream"\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rename does not update a non-default fetch refspec'>)} { (SQ <'\n'> <'\tgit clone one four.one &&\n'> <'\t(\n'> <'\t\tcd four.one &&\n'> <'\t\tgit config remote.origin.fetch +refs/heads/*:refs/heads/origin/* &&\n'> <'\t\tgit remote rename origin upstream &&\n'> < '\t\ttest "$(git config remote.upstream.fetch)" = "+refs/heads/*:refs/heads/origin/*" &&\n' > <'\t\tgit rev-parse -q origin/master\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rename a remote with name part of fetch spec'>)} { (SQ <'\n'> <'\tgit clone one four.two &&\n'> <'\t(\n'> <'\t\tcd four.two &&\n'> <'\t\tgit remote rename origin remote &&\n'> <'\t\tgit remote rename remote upstream &&\n'> < '\t\ttest "$(git config remote.upstream.fetch)" = "+refs/heads/*:refs/remotes/upstream/*"\n' > <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'rename a remote with name prefix of other remote'>)} { (SQ <'\n'> <'\tgit clone one four.three &&\n'> <'\t(\n'> <'\t\tcd four.three &&\n'> <'\t\tgit remote add o git://example.com/repo.git &&\n'> <'\t\tgit remote rename o upstream &&\n'> <'\t\ttest "$(git rev-parse origin/master)" = "$(git rev-parse master)"\n'> <'\t)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(remotes_origin)} spids:[1537]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ('URL: ') (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [1544 1546] ) ('/one\n') ('Push: refs/heads/master:refs/heads/upstream\n') ('Push: refs/heads/next:refs/heads/upstream2\n') ('Pull: refs/heads/master:refs/heads/origin\n') ('Pull: refs/heads/next:refs/heads/origin2\n') ) } do_expansion: True here_end: EOF was_filled: True spids: [1540] ) ] ) (C {(test_expect_success)} {(SQ <'migrate a remote from named file in $GIT_DIR/remotes'>)} { (SQ <'\n'> <'\tgit clone one five &&\n'> <'\torigin_url=$(pwd)/one &&\n'> <'\t(\n'> <'\t\tcd five &&\n'> <'\t\tgit remote remove origin &&\n'> <'\t\tmkdir -p .git/remotes &&\n'> <'\t\tcat ../remotes_origin >.git/remotes/origin &&\n'> <'\t\tgit remote rename origin origin &&\n'> <'\t\ttest_path_is_missing .git/remotes/origin &&\n'> <'\t\ttest "$(git config remote.origin.url)" = "$origin_url" &&\n'> <'\t\tcat >push_expected <<-\\EOF &&\n'> <'\t\trefs/heads/master:refs/heads/upstream\n'> <'\t\trefs/heads/next:refs/heads/upstream2\n'> <'\t\tEOF\n'> <'\t\tcat >fetch_expected <<-\\EOF &&\n'> <'\t\trefs/heads/master:refs/heads/origin\n'> <'\t\trefs/heads/next:refs/heads/origin2\n'> <'\t\tEOF\n'> <'\t\tgit config --get-all remote.origin.push >push_actual &&\n'> <'\t\tgit config --get-all remote.origin.fetch >fetch_actual &&\n'> <'\t\ttest_cmp push_expected push_actual &&\n'> <'\t\ttest_cmp fetch_expected fetch_actual\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'migrate a remote from named file in $GIT_DIR/branches'>)} { (SQ <'\n'> <'\tgit clone one six &&\n'> <'\torigin_url=$(pwd)/one &&\n'> <'\t(\n'> <'\t\tcd six &&\n'> <'\t\tgit remote rm origin &&\n'> <'\t\techo "$origin_url" >.git/branches/origin &&\n'> <'\t\tgit remote rename origin origin &&\n'> <'\t\ttest_path_is_missing .git/branches/origin &&\n'> <'\t\ttest "$(git config remote.origin.url)" = "$origin_url" &&\n'> <'\t\ttest "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin" &&\n'> <'\t\ttest "$(git config remote.origin.push)" = "HEAD:refs/heads/master"\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'migrate a remote from named file in $GIT_DIR/branches (2)'>)} { (SQ <'\n'> <'\tgit clone one seven &&\n'> <'\t(\n'> <'\t\tcd seven &&\n'> <'\t\tgit remote rm origin &&\n'> <'\t\techo "quux#foom" > .git/branches/origin &&\n'> <'\t\tgit remote rename origin origin &&\n'> <'\t\ttest_path_is_missing .git/branches/origin &&\n'> <'\t\ttest "$(git config remote.origin.url)" = "quux" &&\n'> <'\t\ttest "$(git config remote.origin.fetch)" = "refs/heads/foom:refs/heads/origin"\n'> <'\t\ttest "$(git config remote.origin.push)" = "HEAD:refs/heads/foom"\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote prune to cause a dangling symref'>)} { (SQ <'\n'> <'\tgit clone one eight &&\n'> <'\t(\n'> <'\t\tcd one &&\n'> <'\t\tgit checkout side2 &&\n'> <'\t\tgit branch -D master\n'> <'\t) &&\n'> <'\t(\n'> <'\t\tcd eight &&\n'> <'\t\tgit remote prune origin\n'> <'\t) >err 2>&1 &&\n'> <'\ttest_i18ngrep "has become dangling" err &&\n'> <'\n'> <'\t: And the dangling symref will not cause other annoying errors &&\n'> <'\t(\n'> <'\t\tcd eight &&\n'> <'\t\tgit branch -a\n'> <'\t) 2>err &&\n'> <'\t! grep "points nowhere" err &&\n'> <'\t(\n'> <'\t\tcd eight &&\n'> <'\t\ttest_must_fail git branch nomore origin\n'> <'\t) 2>err &&\n'> <'\tgrep "dangling symref" err\n'> ) } ) (C {(test_expect_success)} {(SQ <'show empty remote'>)} { (SQ <'\n'> <'\ttest_create_repo empty &&\n'> <'\tgit clone empty empty-clone &&\n'> <'\t(\n'> <'\t\tcd empty-clone &&\n'> <'\t\tgit remote show origin\n'> <'\t)\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-branches requires a remote'>)} { (SQ <'\n'> <'\ttest_must_fail git remote set-branches &&\n'> <'\ttest_must_fail git remote set-branches --add\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-branches'>)} { (SQ <'\n'> <'\techo "+refs/heads/*:refs/remotes/scratch/*" >expect.initial &&\n'> <'\tsort <<-\\EOF >expect.add &&\n'> <'\t+refs/heads/*:refs/remotes/scratch/*\n'> <'\t+refs/heads/other:refs/remotes/scratch/other\n'> <'\tEOF\n'> <'\tsort <<-\\EOF >expect.replace &&\n'> <'\t+refs/heads/maint:refs/remotes/scratch/maint\n'> <'\t+refs/heads/master:refs/remotes/scratch/master\n'> <'\t+refs/heads/next:refs/remotes/scratch/next\n'> <'\tEOF\n'> <'\tsort <<-\\EOF >expect.add-two &&\n'> <'\t+refs/heads/maint:refs/remotes/scratch/maint\n'> <'\t+refs/heads/master:refs/remotes/scratch/master\n'> <'\t+refs/heads/next:refs/remotes/scratch/next\n'> <'\t+refs/heads/pu:refs/remotes/scratch/pu\n'> <'\t+refs/heads/t/topic:refs/remotes/scratch/t/topic\n'> <'\tEOF\n'> <'\tsort <<-\\EOF >expect.setup-ffonly &&\n'> <'\trefs/heads/master:refs/remotes/scratch/master\n'> <'\t+refs/heads/next:refs/remotes/scratch/next\n'> <'\tEOF\n'> <'\tsort <<-\\EOF >expect.respect-ffonly &&\n'> <'\trefs/heads/master:refs/remotes/scratch/master\n'> <'\t+refs/heads/next:refs/remotes/scratch/next\n'> <'\t+refs/heads/pu:refs/remotes/scratch/pu\n'> <'\tEOF\n'> <'\n'> <'\tgit clone .git/ setbranches &&\n'> <'\t(\n'> <'\t\tcd setbranches &&\n'> <'\t\tgit remote rename origin scratch &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.initial &&\n'> <'\n'> <'\t\tgit remote set-branches scratch --add other &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.add &&\n'> <'\n'> <'\t\tgit remote set-branches scratch maint master next &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.replace &&\n'> <'\n'> <'\t\tgit remote set-branches --add scratch pu t/topic &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.add-two &&\n'> <'\n'> <'\t\tgit config --unset-all remote.scratch.fetch &&\n'> <'\t\tgit config remote.scratch.fetch \\\n'> <'\t\t\trefs/heads/master:refs/remotes/scratch/master &&\n'> <'\t\tgit config --add remote.scratch.fetch \\\n'> <'\t\t\t+refs/heads/next:refs/remotes/scratch/next &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.setup-ffonly &&\n'> <'\n'> <'\t\tgit remote set-branches --add scratch pu &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >config-result &&\n'> <'\t\tsort <config-result >../actual.respect-ffonly\n'> <'\t) &&\n'> <'\ttest_cmp expect.initial actual.initial &&\n'> <'\ttest_cmp expect.add actual.add &&\n'> <'\ttest_cmp expect.replace actual.replace &&\n'> <'\ttest_cmp expect.add-two actual.add-two &&\n'> <'\ttest_cmp expect.setup-ffonly actual.setup-ffonly &&\n'> <'\ttest_cmp expect.respect-ffonly actual.respect-ffonly\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-branches with --mirror'>)} { (SQ <'\n'> <'\techo "+refs/*:refs/*" >expect.initial &&\n'> <'\techo "+refs/heads/master:refs/heads/master" >expect.replace &&\n'> <'\tgit clone --mirror .git/ setbranches-mirror &&\n'> <'\t(\n'> <'\t\tcd setbranches-mirror &&\n'> <'\t\tgit remote rename origin scratch &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >../actual.initial &&\n'> <'\n'> <'\t\tgit remote set-branches scratch heads/master &&\n'> <'\t\tgit config --get-all remote.scratch.fetch >../actual.replace\n'> <'\t) &&\n'> <'\ttest_cmp expect.initial actual.initial &&\n'> <'\ttest_cmp expect.replace actual.replace\n'> ) } ) (C {(test_expect_success)} {(SQ <'new remote'>)} { (SQ <'\n'> <'\tgit remote add someremote foo &&\n'> <'\techo foo >expect &&\n'> <'\tgit config --get-all remote.someremote.url >actual &&\n'> <'\tcmp expect actual\n'> ) } ) (FuncDef name: get_url_test body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(cat)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1821])] ) (AndOr children: [ (SimpleCommand words: [{(git)} {(remote)} {(get-url)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(actual)} spids:[1837])] ) (C {(test_cmp)} {(expect)} {(actual)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [1816] ) spids: [1811 1815] ) (C {(test_expect_success)} {(SQ <'get-url on new remote'>)} { (SQ <'\n'> <'\techo foo | get_url_test someremote &&\n'> <'\techo foo | get_url_test --all someremote &&\n'> <'\techo foo | get_url_test --push someremote &&\n'> <'\techo foo | get_url_test --push --all someremote\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url with locked config'>)} { (SQ <'\n'> <'\ttest_when_finished "rm -f .git/config.lock" &&\n'> <'\tgit config --get-all remote.someremote.url >expect &&\n'> <'\t>.git/config.lock &&\n'> <'\ttest_must_fail git remote set-url someremote baz &&\n'> <'\tgit config --get-all remote.someremote.url >actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url bar'>)} { (SQ <'\n'> <'\tgit remote set-url someremote bar &&\n'> <'\techo bar >expect &&\n'> <'\tgit config --get-all remote.someremote.url >actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url baz bar'>)} { (SQ <'\n'> <'\tgit remote set-url someremote baz bar &&\n'> <'\techo baz >expect &&\n'> <'\tgit config --get-all remote.someremote.url >actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url zot bar'>)} { (SQ <'\n'> <'\ttest_must_fail git remote set-url someremote zot bar &&\n'> <'\techo baz >expect &&\n'> <'\tgit config --get-all remote.someremote.url >actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push zot baz'>)} { (SQ <'\n'> <'\ttest_must_fail git remote set-url --push someremote zot baz &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push zot'>)} { (SQ <'\n'> <'\tgit remote set-url --push someremote zot &&\n'> <'\techo zot >expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'get-url with different urls'>)} { (SQ <'\n'> <'\techo baz | get_url_test someremote &&\n'> <'\techo baz | get_url_test --all someremote &&\n'> <'\techo zot | get_url_test --push someremote &&\n'> <'\techo zot | get_url_test --push --all someremote\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push qux zot'>)} { (SQ <'\n'> <'\tgit remote set-url --push someremote qux zot &&\n'> <'\techo qux >expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push foo qu+x'>)} { (SQ <'\n'> <'\tgit remote set-url --push someremote foo qu+x &&\n'> <'\techo foo >expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push --add aaa'>)} { (SQ <'\n'> <'\tgit remote set-url --push --add someremote aaa &&\n'> <'\techo foo >expect &&\n'> <'\techo aaa >>expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'get-url on multi push remote'>)} { (SQ <'\n'> <'\techo foo | get_url_test --push someremote &&\n'> <'\tget_url_test --push --all someremote <<-\\EOF\n'> <'\tfoo\n'> <'\taaa\n'> <'\tEOF\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push bar aaa'>)} { (SQ <'\n'> <'\tgit remote set-url --push someremote bar aaa &&\n'> <'\techo foo >expect &&\n'> <'\techo bar >>expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push --delete bar'>)} { (SQ <'\n'> <'\tgit remote set-url --push --delete someremote bar &&\n'> <'\techo foo >expect &&\n'> <'\techo "YYY" >>expect &&\n'> <'\techo baz >>expect &&\n'> <'\tgit config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --push --delete foo'>)} { (SQ <'\n'> <'\tgit remote set-url --push --delete someremote foo &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --add bbb'>)} { (SQ <'\n'> <'\tgit remote set-url --add someremote bbb &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\techo bbb >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'get-url on multi fetch remote'>)} { (SQ <'\n'> <'\techo baz | get_url_test someremote &&\n'> <'\tget_url_test --all someremote <<-\\EOF\n'> <'\tbaz\n'> <'\tbbb\n'> <'\tEOF\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --delete .*'>)} { (SQ <'\n'> <'\ttest_must_fail git remote set-url --delete someremote .\\* &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\techo bbb >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --delete bbb'>)} { (SQ <'\n'> <'\tgit remote set-url --delete someremote bbb &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --delete baz'>)} { (SQ <'\n'> <'\ttest_must_fail git remote set-url --delete someremote baz &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --add ccc'>)} { (SQ <'\n'> <'\tgit remote set-url --add someremote ccc &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo baz >>expect &&\n'> <'\techo ccc >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'remote set-url --delete baz'>)} { (SQ <'\n'> <'\tgit remote set-url --delete someremote baz &&\n'> <'\techo "YYY" >expect &&\n'> <'\techo ccc >>expect &&\n'> <'\ttest_must_fail git config --get-all remote.someremote.pushurl >actual &&\n'> <'\techo "YYY" >>actual &&\n'> <'\tgit config --get-all remote.someremote.url >>actual &&\n'> <'\tcmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'extra args: setup'>)} { (SQ <'\n'> <'\t# add a dummy origin so that this does not trigger failure\n'> <'\tgit remote add origin .\n'> ) } ) (FuncDef name: test_extra_arg body: (BraceGroup children: [ (C {(test_expect_success)} {(DQ ('extra args: ') ($ VSub_Star '$*'))} { (DQ ('\n') ('\t\ttest_must_fail git remote ') ($ VSub_Star '$*') (' bogus_extra_arg 2>actual &&\n') ("\t\ttest_i18ngrep '^usage:' actual\n") ('\t') ) } ) ] spids: [2257] ) spids: [2252 2256] ) (C {(test_extra_arg)} {(add)} {(nick)} {(url)}) (C {(test_extra_arg)} {(rename)} {(origin)} {(newname)}) (C {(test_extra_arg)} {(remove)} {(origin)}) (C {(test_extra_arg)} {(set-head)} {(origin)} {(master)}) (C {(test_extra_arg)} {(get-url)} {(origin)} {(newurl)}) (C {(test_extra_arg)} {(set-url)} {(origin)} {(newurl)} {(oldurl)}) (C {(test_expect_success)} {(SQ <'add remote matching the "insteadOf" URL'>)} { (SQ <'\n'> <'\tgit config url.xyz@example.com.insteadOf backup &&\n'> <'\tgit remote add backup xyz@example.com\n'> ) } ) (C {(test_done)}) ] )