(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:unpack-objects span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\tmkdir pub.git &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\tGIT_DIR=pub.git git init --bare &&\n' span_id:22) (Token id: Id.Lit_Chars val: '\tGIT_DIR=pub.git git config receive.fsckobjects true &&\n' span_id: 23 ) (Token id:Id.Lit_Chars val:'\tmkdir work &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\t(\n' span_id:25) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\t\tgit config push.default matching &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\t\tmkdir -p gar/bage &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:30) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\t\t\tgit init &&\n' span_id:32) (Token id: Id.Lit_Chars val: '\t\t\tgit config push.default matching &&\n' span_id: 33 ) (Token id:Id.Lit_Chars val:'\t\t\t>junk &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "Initial junk"\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:38) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Initial superproject"\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:40) ) } ) (C {(test_expect_success)} {(push)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) (Token id:Id.Lit_Chars val:'\t(\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\tgit push ../pub.git master\n' span_id:52) (Token id:Id.Lit_Chars val:'\t)\n' span_id:53) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push if submodule has no remote' span_id:60))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id:Id.Lit_Chars val:'\t(\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\t>junk2 &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\tgit add junk2 &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Second junk"\n' span_id:69) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\t(\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:73) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Second commit for gar/bage" &&\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\t\tgit push --recurse-submodules=check ../pub.git master\n' span_id:75) (Token id:Id.Lit_Chars val:'\t)\n' span_id:76) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push fails if submodule commit not on remote' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\t(\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tcd work/gar &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tgit clone --bare bage ../../submodule.git &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\tcd bage &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\t\tgit remote add origin ../../../submodule.git &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\tgit fetch &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\t\t>junk3 &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\tgit add junk3 &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Third junk"\n' span_id:96) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\t(\n' span_id:98) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:100) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Third commit for gar/bage" &&\n' span_id: 101 ) (Token id: Id.Lit_Chars val: '\t\t# the push should fail with --recurse-submodules=check\n' span_id: 102 ) (Token id:Id.Lit_Chars val:'\t\t# on the command line...\n' span_id:103) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push --recurse-submodules=check ../pub.git master &&\n' span_id: 104 ) (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id: Id.Lit_Chars val: '\t\t# ...or if specified in the configuration..\n' span_id: 106 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c push.recurseSubmodules=check push ../pub.git master\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:108) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push succeeds after commit was pushed to remote' span_id:115))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:119) (Token id:Id.Lit_Chars val:'\t(\n' span_id:120) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\t\tgit push origin master\n' span_id:122) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t(\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\tgit push --recurse-submodules=check ../pub.git master\n' span_id:126) (Token id:Id.Lit_Chars val:'\t)\n' span_id:127) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule commit not on remote but using on-demand on command line' span_id: 134 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\t(\n' span_id:139) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:140) (Token id: Id.Lit_Chars val: '\t\t>recurse-on-demand-on-command-line &&\n' span_id: 141 ) (Token id:Id.Lit_Chars val:'\t\tgit add recurse-on-demand-on-command-line &&\n' span_id:142) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand on command line junk"\n' span_id: 143 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\t(\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:147) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand on command line for gar/bage" &&\n' span_id: 148 ) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master &&\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit got there\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:152) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit got there too\n' span_id: 153 ) (Token id:Id.Lit_Chars val:'\t\tcd gar/bage &&\n' span_id:154) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet origin/master master\n' span_id: 155 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:156) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule commit not on remote but using on-demand from config' span_id: 163 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) (Token id:Id.Lit_Chars val:'\t(\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t\t>recurse-on-demand-from-config &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tgit add recurse-on-demand-from-config &&\n' span_id:171) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand from config junk"\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t(\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:176) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand from config for gar/bage" &&\n' span_id: 177 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=on-demand push ../pub.git master &&\n' span_id: 178 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit got there\n' span_id:179) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:181) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit got there too\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\t\tcd gar/bage &&\n' span_id:183) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet origin/master master\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 recurse-submodules on command line overrides config' span_id: 192 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) (Token id:Id.Lit_Chars val:'\t(\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:198) (Token id: Id.Lit_Chars val: '\t\t>recurse-check-on-command-line-overriding-config &&\n' span_id: 199 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-check-on-command-line-overriding-config &&\n' span_id: 200 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on command-line overriding config junk"\n' span_id: 201 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\t(\n' span_id:203) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:205) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on command-line overriding config for gar/bage" &&\n' span_id: 206 ) (Token id:Id.Lit_Chars val:'\n' span_id:207) (Token id: Id.Lit_Chars val: '\t\t# Ensure that we can override on-demand in the config\n' span_id: 208 ) (Token id:Id.Lit_Chars val:'\t\t# to just check submodules\n' span_id:209) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c push.recurseSubmodules=on-demand push --recurse-submodules=check ../pub.git master &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit did not get there\n' span_id:211) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master^ &&\n' span_id:213) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit did not get there\n' span_id: 214 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 215 ) (Token id:Id.Lit_Chars val:'\n' span_id:216) (Token id: Id.Lit_Chars val: '\t\t# Ensure that we can override check in the config to\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\t\t# disable submodule recursion entirely\n' span_id:218) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 219 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=on-demand push --recurse-submodules=no ../pub.git master &&\n' span_id: 220 ) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:221) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id: 222 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 223 ) (Token id:Id.Lit_Chars val:'\n' span_id:224) (Token id: Id.Lit_Chars val: '\t\t# Ensure that we can override check in the config to\n' span_id: 225 ) (Token id: Id.Lit_Chars val: '\t\t# disable submodule recursion entirely (alternative form)\n' span_id: 226 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=on-demand push --no-recurse-submodules ../pub.git master &&\n' span_id: 227 ) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:228) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id: 229 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 230 ) (Token id:Id.Lit_Chars val:'\n' span_id:231) (Token id: Id.Lit_Chars val: '\t\t# Ensure that we can override check in the config to\n' span_id: 232 ) (Token id:Id.Lit_Chars val:'\t\t# push the submodule too\n' span_id:233) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=check push --recurse-submodules=on-demand ../pub.git master &&\n' span_id: 234 ) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:235) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id: 236 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master)\n' span_id: 237 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:238) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push recurse-submodules last one wins on command line' span_id: 245 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:249) (Token id:Id.Lit_Chars val:'\t(\n' span_id:250) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:251) (Token id: Id.Lit_Chars val: '\t\t>recurse-check-on-command-line-overriding-earlier-command-line &&\n' span_id: 252 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-check-on-command-line-overriding-earlier-command-line &&\n' span_id: 253 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on command-line overridiing earlier command-line junk"\n' span_id: 254 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t(\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:258) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on command-line overriding earlier command-line for gar/bage" &&\n' span_id: 259 ) (Token id:Id.Lit_Chars val:'\n' span_id:260) (Token id:Id.Lit_Chars val:'\t\t# should result in "check"\n' span_id:261) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push --recurse-submodules=on-demand --recurse-submodules=check ../pub.git master &&\n' span_id: 262 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit did not get there\n' span_id:263) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:264) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master^ &&\n' span_id:265) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit did not get there\n' span_id: 266 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 267 ) (Token id:Id.Lit_Chars val:'\n' span_id:268) (Token id:Id.Lit_Chars val:'\t\t# should result in "no"\n' span_id:269) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand --recurse-submodules=no ../pub.git master &&\n' span_id: 270 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit did get there\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:273) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit did not get there\n' span_id: 274 ) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 275 ) (Token id:Id.Lit_Chars val:'\n' span_id:276) (Token id:Id.Lit_Chars val:'\t\t# should result in "no"\n' span_id:277) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand --no-recurse-submodules ../pub.git master &&\n' span_id: 278 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the submodule commit did not get there\n' span_id:279) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master^) &&\n' span_id: 280 ) (Token id:Id.Lit_Chars val:'\n' span_id:281) (Token id: Id.Lit_Chars val: '\t\t# But the options in the other order should push the submodule\n' span_id: 282 ) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=check --recurse-submodules=on-demand ../pub.git master &&\n' span_id: 283 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the submodule commit did get there\n' span_id:284) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:285) (Token id: Id.Lit_Chars val: '\t\t(cd gar/bage && git diff --quiet origin/master master)\n' span_id: 286 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:287) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule commit not on remote using on-demand from cmdline overriding config' span_id: 294 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:298) (Token id:Id.Lit_Chars val:'\t(\n' span_id:299) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:300) (Token id: Id.Lit_Chars val: '\t\t>recurse-on-demand-on-command-line-overriding-config &&\n' span_id: 301 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-on-demand-on-command-line-overriding-config &&\n' span_id: 302 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand on command-line overriding config junk"\n' span_id: 303 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\t(\n' span_id:305) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:307) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse on-demand on command-line overriding config for gar/bage" &&\n' span_id: 308 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=check push --recurse-submodules=on-demand ../pub.git master &&\n' span_id: 309 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit got there\n' span_id:310) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:311) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:312) (Token id: Id.Lit_Chars val: '\t\t# Check that the submodule commit got there\n' span_id: 313 ) (Token id:Id.Lit_Chars val:'\t\tcd gar/bage &&\n' span_id:314) (Token id: Id.Lit_Chars val: '\t\tgit diff --quiet origin/master master\n' span_id: 315 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:316) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule commit disabling recursion from cmdline overriding config' span_id: 323 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:327) (Token id:Id.Lit_Chars val:'\t(\n' span_id:328) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:329) (Token id: Id.Lit_Chars val: '\t\t>recurse-disable-on-command-line-overriding-config &&\n' span_id: 330 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-disable-on-command-line-overriding-config &&\n' span_id: 331 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse disable on command-line overriding config junk"\n' span_id: 332 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\t(\n' span_id:334) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:335) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:336) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse disable on command-line overriding config for gar/bage" &&\n' span_id: 337 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=check push --recurse-submodules=no ../pub.git master &&\n' span_id: 338 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit got there\n' span_id:339) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:341) (Token id: Id.Lit_Chars val: '\t\t# But that the submodule commit did not\n' span_id: 342 ) (Token id: Id.Lit_Chars val: '\t\t( cd gar/bage && git diff --quiet origin/master master^ ) &&\n' span_id: 343 ) (Token id:Id.Lit_Chars val:'\t\t# Now push it to avoid confusing future tests\n' span_id:344) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 345 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:346) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule commit disabling recursion from cmdline (alternative form) overriding config' span_id: 353 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:357) (Token id:Id.Lit_Chars val:'\t(\n' span_id:358) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:359) (Token id: Id.Lit_Chars val: '\t\t>recurse-disable-on-command-line-alt-overriding-config &&\n' span_id: 360 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-disable-on-command-line-alt-overriding-config &&\n' span_id: 361 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse disable on command-line alternative overriding config junk"\n' span_id: 362 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:363) (Token id:Id.Lit_Chars val:'\t(\n' span_id:364) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:365) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:366) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse disable on command-line alternative overriding config for gar/bage" &&\n' span_id: 367 ) (Token id: Id.Lit_Chars val: '\t\tgit -c push.recurseSubmodules=check push --no-recurse-submodules ../pub.git master &&\n' span_id: 368 ) (Token id:Id.Lit_Chars val:'\t\t# Check that the supermodule commit got there\n' span_id:369) (Token id:Id.Lit_Chars val:'\t\tgit fetch ../pub.git &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\t\tgit diff --quiet FETCH_HEAD master &&\n' span_id:371) (Token id: Id.Lit_Chars val: '\t\t# But that the submodule commit did not\n' span_id: 372 ) (Token id: Id.Lit_Chars val: '\t\t( cd gar/bage && git diff --quiet origin/master master^ ) &&\n' span_id: 373 ) (Token id:Id.Lit_Chars val:'\t\t# Now push it to avoid confusing future tests\n' span_id:374) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 375 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:376) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push fails if recurse submodules option passed as yes' span_id: 383 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:387) (Token id:Id.Lit_Chars val:'\t(\n' span_id:388) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:389) (Token id: Id.Lit_Chars val: '\t\t>recurse-push-fails-if-recurse-submodules-passed-as-yes &&\n' span_id: 390 ) (Token id: Id.Lit_Chars val: '\t\tgit add recurse-push-fails-if-recurse-submodules-passed-as-yes &&\n' span_id: 391 ) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse push fails if recurse submodules option passed as yes"\n' span_id: 392 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\t(\n' span_id:394) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:396) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Recurse push fails if recurse submodules option passed as yes for gar/bage" &&\n' span_id: 397 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push --recurse-submodules=yes ../pub.git master &&\n' span_id: 398 ) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c push.recurseSubmodules=yes push ../pub.git master &&\n' span_id: 399 ) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 400 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:401) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push fails when commit on multiple branches if one branch has no remote' span_id: 408 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:412) (Token id:Id.Lit_Chars val:'\t(\n' span_id:413) (Token id:Id.Lit_Chars val:'\t\tcd work/gar/bage &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\t\t>junk4 &&\n' span_id:415) (Token id:Id.Lit_Chars val:'\t\tgit add junk4 &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Fourth junk"\n' span_id:417) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:418) (Token id:Id.Lit_Chars val:'\t(\n' span_id:419) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\t\tgit branch branch2 &&\n' span_id:421) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:422) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Fourth commit for gar/bage" &&\n' span_id:423) (Token id:Id.Lit_Chars val:'\t\tgit checkout branch2 &&\n' span_id:424) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:425) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:426) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout HEAD~1\n' span_id:427) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:428) (Token id:Id.Lit_Chars val:'\t\t>junk1 &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\t\tgit add junk1 &&\n' span_id:430) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "First junk" &&\n' span_id:431) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push --recurse-submodules=check ../pub.git\n' span_id: 432 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:433) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'push succeeds if submodule has no remote and is on the first superproject commit' span_id: 440 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id:Id.Lit_Chars val:'\tgit init --bare a &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\tgit clone a a1 &&\n' span_id:446) (Token id:Id.Lit_Chars val:'\t(\n' span_id:447) (Token id:Id.Lit_Chars val:'\t\tcd a1 &&\n' span_id:448) (Token id:Id.Lit_Chars val:'\t\tgit init b\n' span_id:449) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:450) (Token id:Id.Lit_Chars val:'\t\t\tcd b &&\n' span_id:451) (Token id:Id.Lit_Chars val:'\t\t\t>junk &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "initial"\n' span_id:454) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:455) (Token id:Id.Lit_Chars val:'\t\tgit add b &&\n' span_id:456) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "added submodule" &&\n' span_id: 457 ) (Token id:Id.Lit_Chars val:'\t\tgit push --recurse-submodule=check origin master\n' span_id:458) (Token id:Id.Lit_Chars val:'\t)\n' span_id:459) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push unpushed submodules when not needed' span_id:466))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:470) (Token id:Id.Lit_Chars val:'\t(\n' span_id:471) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:473) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout master &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\t\t\t>junk5 &&\n' span_id:476) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk5 &&\n' span_id:477) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "Fifth junk" &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\t\t\tgit push &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\t\t\tgit rev-parse origin/master >../../../expected\n' span_id:480) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:481) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Fifth commit for gar/bage" &&\n' span_id:484) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 485 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:486) (Token id:Id.Lit_Chars val:'\t(\n' span_id:487) (Token id:Id.Lit_Chars val:'\t\tcd submodule.git &&\n' span_id:488) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse master >../actual\n' span_id:489) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:490) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:491) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push unpushed submodules when not needed 2' span_id:498))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) (Token id:Id.Lit_Chars val:'\t(\n' span_id:503) (Token id:Id.Lit_Chars val:'\t\tcd submodule.git &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse master >../expected\n' span_id:505) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:506) (Token id:Id.Lit_Chars val:'\t(\n' span_id:507) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:508) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:509) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\t\t\t>junk6 &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk6 &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "Sixth junk"\n' span_id:513) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\t\t>junk2 &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\t\tgit add junk2 &&\n' span_id:516) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Second junk for work" &&\n' span_id:517) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 518 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:519) (Token id:Id.Lit_Chars val:'\t(\n' span_id:520) (Token id:Id.Lit_Chars val:'\t\tcd submodule.git &&\n' span_id:521) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse master >../actual\n' span_id:522) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:523) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:524) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push unpushed submodules recursively' span_id:531))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:535) (Token id:Id.Lit_Chars val:'\t(\n' span_id:536) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:538) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:539) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout master &&\n' span_id:540) (Token id:Id.Lit_Chars val:'\t\t\t> junk7 &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk7 &&\n' span_id:542) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "Seventh junk" &&\n' span_id:543) (Token id: Id.Lit_Chars val: '\t\t\tgit rev-parse master >../../../expected\n' span_id: 544 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:545) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:546) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:547) (Token id: Id.Lit_Chars val: '\t\tgit commit -m "Seventh commit for gar/bage" &&\n' span_id: 548 ) (Token id: Id.Lit_Chars val: '\t\tgit push --recurse-submodules=on-demand ../pub.git master\n' span_id: 549 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:550) (Token id:Id.Lit_Chars val:'\t(\n' span_id:551) (Token id:Id.Lit_Chars val:'\t\tcd submodule.git &&\n' span_id:552) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse master >../actual\n' span_id:553) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:554) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:555) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push unpushable submodule recursively fails' span_id:562))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:566) (Token id:Id.Lit_Chars val:'\t(\n' span_id:567) (Token id:Id.Lit_Chars val:'\t\tcd work &&\n' span_id:568) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:569) (Token id:Id.Lit_Chars val:'\t\t\tcd gar/bage &&\n' span_id:570) (Token id: Id.Lit_Chars val: '\t\t\tgit rev-parse origin/master >../../../expected &&\n' span_id: 571 ) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout master~0 &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\t\t\t> junk8 &&\n' span_id:573) (Token id:Id.Lit_Chars val:'\t\t\tgit add junk8 &&\n' span_id:574) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "Eighth junk"\n' span_id:575) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:576) (Token id:Id.Lit_Chars val:'\t\tgit add gar/bage &&\n' span_id:577) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Eighth commit for gar/bage" &&\n' span_id:578) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git push --recurse-submodules=on-demand ../pub.git master\n' span_id: 579 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:580) (Token id:Id.Lit_Chars val:'\t(\n' span_id:581) (Token id:Id.Lit_Chars val:'\t\tcd submodule.git &&\n' span_id:582) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse master >../actual\n' span_id:583) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:585) ) } ) (C {(test_done)}) ] )