(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:'push from/to a shallow clone' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: commit body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:28) fd: -1 arg_word: {(tracked)} ) ] ) (C {(git)} {(add)} {(tracked)}) (C {(git)} {(commit)} {(-m)} {(DQ ($ Id.VSub_Number '$1'))}) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:59))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id: Id.Lit_Chars val: '\tgit config --global transfer.fsckObjects true &&\n' span_id: 64 ) (Token id:Id.Lit_Chars val:'\tcommit 1 &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tcommit 2 &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tcommit 3 &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\tcommit 4 &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit clone . full &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\t(\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit init full-abc &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\tcd full-abc &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\tcommit a &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tcommit b &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\tcommit c\n' span_id:75) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tgit clone --no-local --depth=2 .git shallow &&\n' span_id:77) (Token id: Id.Lit_Chars val: '\tgit --git-dir=shallow/.git log --format=%s >actual &&\n' span_id: 78 ) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:79) (Token id:Id.Lit_Chars val:'4\n' span_id:80) (Token id:Id.Lit_Chars val:'3\n' span_id:81) (Token id:Id.Lit_Chars val:'EOF\n' span_id:82) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tgit clone --no-local --depth=2 full-abc/.git shallow2 &&\n' span_id:84) (Token id: Id.Lit_Chars val: '\tgit --git-dir=shallow2/.git log --format=%s >actual &&\n' span_id: 85 ) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:86) (Token id:Id.Lit_Chars val:'c\n' span_id:87) (Token id:Id.Lit_Chars val:'b\n' span_id:88) (Token id:Id.Lit_Chars val:'EOF\n' span_id:89) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:90) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push from shallow clone' span_id:97))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:101) (Token id:Id.Lit_Chars val:'\t(\n' span_id:102) (Token id:Id.Lit_Chars val:'\tcd shallow &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\tcommit 5 &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit push ../.git +master:refs/remotes/shallow/master\n' span_id:105) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\tgit log --format=%s shallow/master >actual &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit fsck &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:109) (Token id:Id.Lit_Chars val:'5\n' span_id:110) (Token id:Id.Lit_Chars val:'4\n' span_id:111) (Token id:Id.Lit_Chars val:'3\n' span_id:112) (Token id:Id.Lit_Chars val:'2\n' span_id:113) (Token id:Id.Lit_Chars val:'1\n' span_id:114) (Token id:Id.Lit_Chars val:'EOF\n' span_id:115) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:116) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push from shallow clone, with grafted roots' span_id:123))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) (Token id:Id.Lit_Chars val:'\tcd shallow2 &&\n' span_id:129) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push ../.git +master:refs/remotes/shallow2/master 2>err &&\n' span_id: 130 ) (Token id:Id.Lit_Chars val:'\tgrep "shallow2/master.*shallow update not allowed" err\n' span_id:131) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse shallow2/master &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit fsck\n' span_id:134) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'add new shallow root with receive.updateshallow on' span_id: 141 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) (Token id: Id.Lit_Chars val: '\ttest_config receive.shallowupdate true &&\n' span_id: 146 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:147) (Token id:Id.Lit_Chars val:'\tcd shallow2 &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tgit push ../.git +master:refs/remotes/shallow2/master\n' span_id:149) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit log --format=%s shallow2/master >actual &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\tgit fsck &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:153) (Token id:Id.Lit_Chars val:'c\n' span_id:154) (Token id:Id.Lit_Chars val:'b\n' span_id:155) (Token id:Id.Lit_Chars val:'EOF\n' span_id:156) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:157) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push from shallow to shallow' span_id:164))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\t(\n' span_id:169) (Token id:Id.Lit_Chars val:'\tcd shallow &&\n' span_id:170) (Token id: Id.Lit_Chars val: '\tgit --git-dir=../shallow2/.git config receive.shallowupdate true &&\n' span_id: 171 ) (Token id: Id.Lit_Chars val: '\tgit push ../shallow2/.git +master:refs/remotes/shallow/master &&\n' span_id: 172 ) (Token id: Id.Lit_Chars val: '\tgit --git-dir=../shallow2/.git config receive.shallowupdate false\n' span_id: 173 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\t(\n' span_id:175) (Token id:Id.Lit_Chars val:'\tcd shallow2 &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\tgit log --format=%s shallow/master >actual &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tgit fsck &&\n' span_id:178) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:179) (Token id:Id.Lit_Chars val:'5\n' span_id:180) (Token id:Id.Lit_Chars val:'4\n' span_id:181) (Token id:Id.Lit_Chars val:'3\n' span_id:182) (Token id:Id.Lit_Chars val:'EOF\n' span_id:183) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:184) (Token id:Id.Lit_Chars val:'\t)\n' span_id:185) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push from full to shallow' span_id:192))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) (Token id: Id.Lit_Chars val: '\t! git --git-dir=shallow2/.git cat-file blob $(echo 1|git hash-object --stdin) &&\n' span_id: 197 ) (Token id:Id.Lit_Chars val:'\tcommit 1 &&\n' span_id:198) (Token id: Id.Lit_Chars val: '\tgit push shallow2/.git +master:refs/remotes/top/master &&\n' span_id: 199 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:200) (Token id:Id.Lit_Chars val:'\tcd shallow2 &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tgit log --format=%s top/master >actual &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\tgit fsck &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tcat <<EOF >expect &&\n' span_id:204) (Token id:Id.Lit_Chars val:'1\n' span_id:205) (Token id:Id.Lit_Chars val:'4\n' span_id:206) (Token id:Id.Lit_Chars val:'3\n' span_id:207) (Token id:Id.Lit_Chars val:'EOF\n' span_id:208) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:209) (Token id: Id.Lit_Chars val: '\tgit cat-file blob $(echo 1|git hash-object --stdin) >/dev/null\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:211) ) } ) (C {(test_done)}) ] )