(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:'test refspec written by clone-command' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id: Id.Lit_Chars val: '\t# Make two branches, "master" and "side"\n' span_id: 22 ) (Token id:Id.Lit_Chars val:'\techo one >file &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m one &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo two >file &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit commit -a -m two &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit tag two &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\techo three >file &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit commit -a -m three &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit checkout -b side &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo four >file &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -a -m four &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\t# default clone\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit clone . dir_all &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\t# default --single that follows HEAD=master\n' span_id:39) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch . dir_master &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id: Id.Lit_Chars val: '\t# default --single that follows HEAD=side\n' span_id: 42 ) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:43) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch . dir_side &&\n' span_id: 44 ) (Token id:Id.Lit_Chars val:'\n' span_id:45) (Token id: Id.Lit_Chars val: '\t# explicit --single that follows side\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:47) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch --branch side . dir_side2 &&\n' span_id: 48 ) (Token id:Id.Lit_Chars val:'\n' span_id:49) (Token id:Id.Lit_Chars val:'\t# default --single with --mirror\n' span_id:50) (Token id:Id.Lit_Chars val:'\tgit clone --single-branch --mirror . dir_mirror &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\t# default --single with --branch and --mirror\n' span_id:53) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch --mirror --branch side . dir_mirror_side &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id: Id.Lit_Chars val: '\t# --single that does not know what branch to follow\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\tgit checkout two^ &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\tgit clone --single-branch . dir_detached &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\t# explicit --single with tag\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit clone --single-branch --branch two . dir_tag &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id:Id.Lit_Chars val:'\t# advance both "master" and "side" branches\n' span_id:63) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo five >file &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tgit commit -a -m five &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\techo six >file &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit commit -a -m six &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\t# update tag\n' span_id:71) (Token id:Id.Lit_Chars val:'\tgit tag -d two && git tag two\n' span_id:72) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'by default all branches will be kept updated' span_id:79))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'\t(\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\tcd dir_all && git fetch &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs/remotes/origin |\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\t -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id:88) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\t# follow both master and side\n' span_id:90) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/heads >expect &&\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:92) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'by default no tags will be kept updated' span_id:99))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id:Id.Lit_Chars val:'\t(\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\tcd dir_all && git fetch &&\n' span_id:105) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/tags >../actual\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:107) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/tags >expect &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test_cmp expect actual\n' span_id:109) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--single-branch while HEAD pointing at master' span_id:116))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) (Token id:Id.Lit_Chars val:'\t(\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tcd dir_master && git fetch &&\n' span_id:122) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/remotes/origin |\n' span_id: 123 ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:124) (Token id: Id.Lit_Chars val: '\t\t -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id: 125 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t# only follow master\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/master >expect &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:129) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--single-branch while HEAD pointing at side' span_id:136))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:140) (Token id:Id.Lit_Chars val:'\t(\n' span_id:141) (Token id:Id.Lit_Chars val:'\t\tcd dir_side && git fetch &&\n' span_id:142) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/remotes/origin |\n' span_id: 143 ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:144) (Token id: Id.Lit_Chars val: '\t\t -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id: 145 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t# only follow side\n' span_id:147) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/side >expect &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:149) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--single-branch with explicit --branch side' span_id:156))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) (Token id:Id.Lit_Chars val:'\t(\n' span_id:161) (Token id:Id.Lit_Chars val:'\t\tcd dir_side2 && git fetch &&\n' span_id:162) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/remotes/origin |\n' span_id: 163 ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:164) (Token id: Id.Lit_Chars val: '\t\t -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id: 165 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\t# only follow side\n' span_id:167) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs/heads/side >expect &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:169) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--single-branch with explicit --branch with tag fetches updated tag' span_id: 176 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\t(\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\tcd dir_tag && git fetch &&\n' span_id:182) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/tags >../actual\n' span_id: 183 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:184) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/tags >expect &&\n' span_id: 185 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:186) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--single-branch with --mirror' span_id:193))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:197) (Token id:Id.Lit_Chars val:'\t(\n' span_id:198) (Token id:Id.Lit_Chars val:'\t\tcd dir_mirror && git fetch &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs > ../actual\n' span_id:200) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs >expect &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:203) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--single-branch with explicit --branch and --mirror' span_id: 210 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:214) (Token id:Id.Lit_Chars val:'\t(\n' span_id:215) (Token id:Id.Lit_Chars val:'\t\tcd dir_mirror_side && git fetch &&\n' span_id:216) (Token id:Id.Lit_Chars val:'\t\tgit for-each-ref refs > ../actual\n' span_id:217) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\tgit for-each-ref refs >expect &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:220) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--single-branch with detached' span_id:227))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) (Token id:Id.Lit_Chars val:'\t(\n' span_id:232) (Token id:Id.Lit_Chars val:'\t\tcd dir_detached && git fetch &&\n' span_id:233) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/remotes/origin |\n' span_id: 234 ) (Token id:Id.Lit_Chars val:'\t\tsed -e "/HEAD$/d" \\\n' span_id:235) (Token id: Id.Lit_Chars val: '\t\t -e "s|/remotes/origin/|/heads/|" >../actual\n' span_id: 236 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\t# nothing\n' span_id:238) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:240) ) } ) (C {(test_done)}) ] )