(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 updating submodules\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This test verifies that "git submodule update" detaches the HEAD of the\n'
                  span_id: 17
                ) 
                (Token
                  id: Id.Lit_Chars
                  val: 
'submodule and "git submodule update --rebase/--merge" does not detach the HEAD.\n'
                  span_id: 18
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: compare_head
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha_master)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:36)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(rev-list)} {(--max-count) (Id.Lit_Equals '=') (1)} {(master)})
                            ]
                          )
                      )
                    }
                  spids: [35]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha_head)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:50)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(rev-list)} {(--max-count) (Id.Lit_Equals '=') (1)} {(HEAD)})
                            ]
                          )
                      )
                    }
                  spids: [49]
                )
              ]
            )
            (C {(test)} {(DQ ($ Id.VSub_DollarName '$sha_master'))} {(Id.Lit_Equals '=')} 
              {(DQ ($ Id.VSub_DollarName '$sha_head'))}
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup a submodule tree' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\techo file > file &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit commit -m upstream &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit clone . super &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit clone super submodule &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tgit clone super rebasing &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit clone super merging &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tgit clone super none &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:97) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add ../submodule submodule &&\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\t git commit -m "submodule" &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\t git submodule init submodule\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\t(cd submodule &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\techo "line2" > file &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "Commit 2"\n' span_id:106) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\t  git pull --rebase origin\n' span_id:110) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\t git commit -m "submodule update"\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:115) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add ../rebasing rebasing &&\n'
            span_id: 116
          ) (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\t git commit -m "rebasing"\n' span_id:118) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:119) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\t git submodule add ../merging merging &&\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\t git commit -m "rebasing"\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\t git submodule add ../none none &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\t git commit -m "none"\n' span_id:128) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\tgit clone . recursivesuper &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\t( cd recursivesuper\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\t git submodule add ../super super\n' span_id:132) (Token id:Id.Lit_Chars val:'\t)\n' span_id:133)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update detaching the HEAD ' span_id:140))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD~1\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t ! compare_head\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:155)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update from subdirectory' span_id:162))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD~1\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\tmkdir super/sub &&\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\t(cd super/sub &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t (cd ../submodule &&\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:173) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:174) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update ../submodule &&\n'
            span_id: 175
          ) (Token id:Id.Lit_Chars val:'\t cd ../submodule &&\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\t ! compare_head\n' span_id:177) (Token id:Id.Lit_Chars val:'\t)\n' span_id:178)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:supersha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:183)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(-C)} {(super)} {(rev-parse)} {(HEAD)})]
                  )
              )
            }
          spids: [182]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:mergingsha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:196)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(-C)} {(super/merging)} {(rev-parse)} {(HEAD)})]
                  )
              )
            }
          spids: [195]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nonesha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:209)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(-C)} {(super/none)} {(rev-parse)} {(HEAD)})]
                  )
              )
            }
          spids: [208]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rebasingsha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:222)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(-C)} {(super/rebasing)} {(rev-parse)} {(HEAD)})]
                  )
              )
            }
          spids: [221]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:submodulesha1)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:235)
                command_list: 
                  (command.CommandList
                    children: [(C {(git)} {(-C)} {(super/submodule)} {(rev-parse)} {(HEAD)})]
                  )
              )
            }
          spids: [234]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pwd)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:248)
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
          spids: [247]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:255)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 277
          stdin_parts: [
            ("Submodule path '../super': checked out '")
            ($ Id.VSub_DollarName '$supersha1')
            ("'\n")
            ("Submodule path '../super/merging': checked out '")
            ($ Id.VSub_DollarName '$mergingsha1')
            ("'\n")
            ("Submodule path '../super/none': checked out '")
            ($ Id.VSub_DollarName '$nonesha1')
            ("'\n")
            ("Submodule path '../super/rebasing': checked out '")
            ($ Id.VSub_DollarName '$rebasingsha1')
            ("'\n")
            ("Submodule path '../super/submodule': checked out '")
            ($ Id.VSub_DollarName '$submodulesha1')
            ("'\n")
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:258)
          fd: -1
          arg_word: {(expect)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:281)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 316
          stdin_parts: [
            ("Submodule 'merging' (")
            ($ Id.VSub_DollarName '$pwd')
            ("/merging) registered for path '../super/merging'\n")
            ("Submodule 'none' (")
            ($ Id.VSub_DollarName '$pwd')
            ("/none) registered for path '../super/none'\n")
            ("Submodule 'rebasing' (")
            ($ Id.VSub_DollarName '$pwd')
            ("/rebasing) registered for path '../super/rebasing'\n")
            ("Submodule 'submodule' (")
            ($ Id.VSub_DollarName '$pwd')
            ("/submodule) registered for path '../super/submodule'\n")
            ("Cloning into '")
            ($ Id.VSub_DollarName '$pwd')
            ("/recursivesuper/super/merging'...\n")
            ('done.\n')
            ("Cloning into '")
            ($ Id.VSub_DollarName '$pwd')
            ("/recursivesuper/super/none'...\n")
            ('done.\n')
            ("Cloning into '")
            ($ Id.VSub_DollarName '$pwd')
            ("/recursivesuper/super/rebasing'...\n")
            ('done.\n')
            ("Cloning into '")
            ($ Id.VSub_DollarName '$pwd')
            ("/recursivesuper/super/submodule'...\n")
            ('done.\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:284)
          fd: -1
          arg_word: {(expect2)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --init --recursive from subdirectory'
            span_id: 321
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C recursivesuper/super reset --hard HEAD^ &&\n'
            span_id: 326
          ) (Token id:Id.Lit_Chars val:'\t(cd recursivesuper &&\n' span_id:327) 
          (Token id:Id.Lit_Chars val:'\t mkdir tmp &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\t cd tmp &&\n' span_id:329) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t git submodule update --init --recursive ../super >../../actual 2>../../actual2\n'
            span_id: 330
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect actual &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect2 actual2\n' span_id:333)
        )
      }
    )
    (command.Sentence
      child: 
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:apos)
              op: assign_op.Equal
              rhs: {(DQ ("'"))}
              spids: [337]
            )
          ]
        )
      terminator: (Token id:Id.Op_Semi val:';' span_id:341)
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update does not fetch already present commits'
            span_id: 346
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:350) 
          (Token id:Id.Lit_Chars val:'\t(cd submodule &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\t  echo line3 >> file &&\n' span_id:352) 
          (Token id:Id.Lit_Chars val:'\t  git add file &&\n' span_id:353) (Token id:Id.Lit_Chars val:'\t  test_tick &&\n' span_id:354) 
          (Token id:Id.Lit_Chars val:'\t  git commit -m "upstream line3"\n' span_id:355) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:356) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\t  head=$(git rev-parse --verify HEAD) &&\n' span_id:358) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t  echo "Submodule path ${apos}submodule$apos: checked out $apos$head$apos" > ../../expected &&\n'
            span_id: 359
          ) (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:360) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:361) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:362) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git submodule update > ../actual 2> ../actual.err\n'
            span_id: 363
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:364) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected actual &&\n' span_id:365) (Token id:Id.Lit_Chars val:'\t! test -s actual.err\n' span_id:366)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update should fail due to local changes'
            span_id: 373
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:377) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:378) (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD~1 &&\n' span_id:379) 
          (Token id:Id.Lit_Chars val:'\t echo "local change" > file\n' span_id:380) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:381) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:382) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:383) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:384) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:385) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update submodule\n'
            span_id: 386
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:387)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update should throw away changes with --force '
            span_id: 393
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:397) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:398) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:399) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:400) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:401) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --force submodule &&\n'
            span_id: 402
          ) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:403) 
          (Token id:Id.Lit_Chars val:'\t ! compare_head\n' span_id:404) (Token id:Id.Lit_Chars val:'\t)\n' span_id:405)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --force forcibly checks out submodules'
            span_id: 412
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:416) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:417) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:418) 
          (Token id:Id.Lit_Chars val:'\t  rm -f file\n' span_id:419) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:420) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --force submodule &&\n'
            span_id: 421
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:422) 
          (Token id:Id.Lit_Chars val:'\t  test "$(git status -s file)" = ""\n' span_id:423) (Token id:Id.Lit_Chars val:'\t )\n' span_id:424) (Token id:Id.Lit_Chars val:'\t)\n' span_id:425)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --remote should fetch upstream changes'
            span_id: 432
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:436) 
          (Token id:Id.Lit_Chars val:'\t(cd submodule &&\n' span_id:437) (Token id:Id.Lit_Chars val:'\t echo line4 >> file &&\n' span_id:438) 
          (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:439) (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:440) 
          (Token id:Id.Lit_Chars val:'\t git commit -m "upstream line4"\n' span_id:441) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:442) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:443) (Token id:Id.Lit_Chars val:'\t git submodule update --remote --force submodule &&\n' span_id:444) 
          (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:445) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t test "$(git log -1 --oneline)" = "$(GIT_DIR=../../submodule/.git git log -1 --oneline)"\n'
            span_id: 446
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:447)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --remote should fetch upstream changes with .'
            span_id: 454
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:458) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:459) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:460) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config -f .gitmodules submodule."submodule".branch "." &&\n'
            span_id: 461
          ) (Token id:Id.Lit_Chars val:'\t\tgit add .gitmodules &&\n' span_id:462) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit commit -m "submodules: update from the respective superproject branch"\n'
            span_id: 463
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\t(\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\t\tcd submodule &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\t\techo line4a >> file &&\n' span_id:467) 
          (Token id:Id.Lit_Chars val:'\t\tgit add file &&\n' span_id:468) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:469) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit commit -m "upstream line4a" &&\n'
            span_id: 470
          ) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b test-branch &&\n' span_id:471) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit on-test-branch\n' span_id:472) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\t(\n' span_id:474) 
          (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\t\tgit submodule update --remote --force submodule &&\n' span_id:476) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit -C submodule log -1 --oneline >actual\n'
            span_id: 477
          ) (Token id:Id.Lit_Chars val:'\t\tgit -C ../submodule log -1 --oneline master >expect\n' span_id:478) 
          (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b test-branch &&\n' span_id:480) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit submodule update --remote --force submodule &&\n'
            span_id: 481
          ) (Token id:Id.Lit_Chars val:'\t\tgit -C submodule log -1 --oneline >actual\n' span_id:482) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit -C ../submodule log -1 --oneline test-branch >expect\n'
            span_id: 483
          ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual &&\n' span_id:484) 
          (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:485) (Token id:Id.Lit_Chars val:'\t\tgit branch -d test-branch &&\n' span_id:486) 
          (Token id:Id.Lit_Chars val:'\t\tgit reset --hard HEAD^\n' span_id:487) (Token id:Id.Lit_Chars val:'\t)\n' span_id:488)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'local config should override .gitmodules branch' span_id:495))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:499) 
          (Token id:Id.Lit_Chars val:'\t(cd submodule &&\n' span_id:500) (Token id:Id.Lit_Chars val:'\t git checkout test-branch &&\n' span_id:501) 
          (Token id:Id.Lit_Chars val:'\t echo line5 >> file &&\n' span_id:502) (Token id:Id.Lit_Chars val:'\t git add file &&\n' span_id:503) 
          (Token id:Id.Lit_Chars val:'\t test_tick &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\t git commit -m "upstream line5" &&\n' span_id:505) 
          (Token id:Id.Lit_Chars val:'\t git checkout master\n' span_id:506) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:507) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:508) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.branch test-branch &&\n' span_id:509) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --remote --force submodule &&\n'
            span_id: 510
          ) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:511) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t test "$(git log -1 --oneline)" = "$(GIT_DIR=../../submodule/.git git log -1 --oneline test-branch)"\n'
            span_id: 512
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:513)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update --rebase staying on master' span_id:520))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:524) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:525) (Token id:Id.Lit_Chars val:'\t  git checkout master\n' span_id:526) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:527) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:528) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:530) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\t git submodule update --rebase submodule &&\n' span_id:532) 
          (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:534) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:535)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update --merge staying on master' span_id:542))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:546) 
          (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:547) (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:548) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:549) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:550) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:551) (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:552) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:553) (Token id:Id.Lit_Chars val:'\t git submodule update --merge submodule &&\n' span_id:554) 
          (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:556) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:557)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update - rebase in .git/config' span_id:564))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:568) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:569) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update rebase\n' span_id:570) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:571) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:572) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:573) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:574) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:575) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:576) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:577) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:578) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:579) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:580) 
          (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:581) (Token id:Id.Lit_Chars val:'\t)\n' span_id:582)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update - checkout in .git/config but --rebase given'
            span_id: 589
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:593) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:594) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update checkout\n' span_id:595) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:596) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:597) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:598) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:599) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:600) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:601) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:602) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:603) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --rebase submodule &&\n'
            span_id: 604
          ) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:605) 
          (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:606) (Token id:Id.Lit_Chars val:'\t)\n' span_id:607)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update - merge in .git/config' span_id:614))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:618) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update merge\n' span_id:620) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:621) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:622) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:623) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:624) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:625) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:626) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:627) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:628) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:629) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:630) 
          (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:631) (Token id:Id.Lit_Chars val:'\t)\n' span_id:632)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update - checkout in .git/config but --merge given'
            span_id: 639
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:643) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:644) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update checkout\n' span_id:645) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:646) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:647) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD~1\n' span_id:648) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:649) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:650) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:651) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:652) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:653) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --merge submodule &&\n'
            span_id: 654
          ) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:655) 
          (Token id:Id.Lit_Chars val:'\t compare_head\n' span_id:656) (Token id:Id.Lit_Chars val:'\t)\n' span_id:657)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update - checkout in .git/config' span_id:664))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:668) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:669) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update checkout\n' span_id:670) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:672) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD^\n' span_id:673) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:674) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:675) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:676) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:677) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:678) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:680) 
          (Token id:Id.Lit_Chars val:'\t ! compare_head\n' span_id:681) (Token id:Id.Lit_Chars val:'\t)\n' span_id:682)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update - command in .git/config' span_id:689))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:693) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:694) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update "!git checkout"\n' span_id:695) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:696) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:697) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD^\n' span_id:698) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:699) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:700) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:701) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:702) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:703) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:704) (Token id:Id.Lit_Chars val:'\t cd submodule &&\n' span_id:705) 
          (Token id:Id.Lit_Chars val:'\t ! compare_head\n' span_id:706) (Token id:Id.Lit_Chars val:'\t)\n' span_id:707)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:713)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 724
          stdin_parts: [
            ("Execution of 'false ")
            ($ Id.VSub_DollarName '$submodulesha1')
            ("' failed in submodule path 'submodule'\n")
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:717)
          fd: -1
          arg_word: {(expect)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update - command in .git/config catches failure'
            span_id: 729
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:733) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:734) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update "!false"\n' span_id:735) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:736) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:737) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard $submodulesha1^\n' span_id:738) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:739) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:740) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update submodule 2>../actual\n'
            span_id: 741
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:742) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp actual expect\n' span_id:743)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:749)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 760
          stdin_parts: [
            ("Execution of 'false ")
            ($ Id.VSub_DollarName '$submodulesha1')
            ("' failed in submodule path '../submodule'\n")
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:753)
          fd: -1
          arg_word: {(expect)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update - command in .git/config catches failure -- subdirectory'
            span_id: 765
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:769) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:770) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update "!false"\n' span_id:771) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:772) (Token id:Id.Lit_Chars val:'\t(cd super/submodule &&\n' span_id:773) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard $submodulesha1^\n' span_id:774) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:775) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:776) (Token id:Id.Lit_Chars val:'\t mkdir tmp && cd tmp &&\n' span_id:777) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update ../submodule 2>../../actual\n'
            span_id: 778
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:779) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp actual expect\n' span_id:780)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:786)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 798
          stdin_parts: [
            ("Execution of 'false ")
            ($ Id.VSub_DollarName '$submodulesha1')
            ("' failed in submodule path '../super/submodule'\n")
            ("Failed to recurse into submodule path '../super'\n")
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:790)
          fd: -1
          arg_word: {(expect)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 
'recursive submodule update - command in .git/config catches failure -- subdirectory'
            span_id: 803
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:807) 
          (Token id:Id.Lit_Chars val:'\t(cd recursivesuper &&\n' span_id:808) (Token id:Id.Lit_Chars val:'\t git submodule update --remote super &&\n' span_id:809) 
          (Token id:Id.Lit_Chars val:'\t git add super &&\n' span_id:810) 
          (Token
            id: Id.Lit_Chars
            val: '\t git commit -m "update to latest to have more than one commit in submodules"\n'
            span_id: 811
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:812) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C recursivesuper/super config submodule.submodule.update "!false" &&\n'
            span_id: 813
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C recursivesuper/super/submodule reset --hard $submodulesha1^ &&\n'
            span_id: 814
          ) (Token id:Id.Lit_Chars val:'\t(cd recursivesuper &&\n' span_id:815) 
          (Token id:Id.Lit_Chars val:'\t mkdir -p tmp && cd tmp &&\n' span_id:816) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update --recursive ../super 2>../../actual\n'
            span_id: 817
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:818) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp actual expect\n' span_id:819)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule init does not copy command into .git/config'
            span_id: 826
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:830) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:831) (Token id:Id.Lit_Chars val:'\t H=$(git ls-files -s submodule | cut -d" " -f2) &&\n' span_id:832) 
          (Token id:Id.Lit_Chars val:'\t mkdir submodule1 &&\n' span_id:833) 
          (Token
            id: Id.Lit_Chars
            val: '\t git update-index --add --cacheinfo 160000 $H submodule1 &&\n'
            span_id: 834
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.submodule1.path submodule1 &&\n'
            span_id: 835
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.submodule1.url ../submodule &&\n'
            span_id: 836
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.submodule1.update !false &&\n'
            span_id: 837
          ) (Token id:Id.Lit_Chars val:'\t git submodule init submodule1 &&\n' span_id:838) 
          (Token id:Id.Lit_Chars val:'\t echo "none" >expect &&\n' span_id:839) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule1.update >actual &&\n' span_id:840) 
          (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:841) (Token id:Id.Lit_Chars val:'\t)\n' span_id:842)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule init picks up rebase' span_id:849))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:853) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:854) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.rebasing.update rebase &&\n'
            span_id: 855
          ) (Token id:Id.Lit_Chars val:'\t git submodule init rebasing &&\n' span_id:856) 
          (Token
            id: Id.Lit_Chars
            val: '\t test "rebase" = "$(git config submodule.rebasing.update)"\n'
            span_id: 857
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:858)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule init picks up merge' span_id:865))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:869) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:870) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.merging.update merge &&\n'
            span_id: 871
          ) (Token id:Id.Lit_Chars val:'\t git submodule init merging &&\n' span_id:872) 
          (Token
            id: Id.Lit_Chars
            val: '\t test "merge" = "$(git config submodule.merging.update)"\n'
            span_id: 873
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:874)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --merge  - ignores --merge  for new submodules'
            span_id: 881
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:885) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:886) (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:887) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:888) (Token id:Id.Lit_Chars val:'\t git status -s submodule >expect &&\n' span_id:889) 
          (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:890) (Token id:Id.Lit_Chars val:'\t git submodule update --merge submodule &&\n' span_id:891) 
          (Token id:Id.Lit_Chars val:'\t git status -s submodule >actual &&\n' span_id:892) (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:893) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:894)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --rebase - ignores --rebase for new submodules'
            span_id: 901
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:905) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:906) (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:907) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:908) (Token id:Id.Lit_Chars val:'\t git status -s submodule >expect &&\n' span_id:909) 
          (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:910) (Token id:Id.Lit_Chars val:'\t git submodule update --rebase submodule &&\n' span_id:911) 
          (Token id:Id.Lit_Chars val:'\t git status -s submodule >actual &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:913) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:914)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update ignores update=merge config for new submodules'
            span_id: 921
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:925) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:926) (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:927) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\t git status -s submodule >expect &&\n' span_id:929) 
          (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update merge &&\n' span_id:931) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\t git status -s submodule >actual &&\n' span_id:933) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config --unset submodule.submodule.update &&\n'
            span_id: 934
          ) (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:935) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:936)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update ignores update=rebase config for new submodules'
            span_id: 943
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:947) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:948) (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:949) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:950) (Token id:Id.Lit_Chars val:'\t git status -s submodule >expect &&\n' span_id:951) 
          (Token id:Id.Lit_Chars val:'\t rm -rf submodule &&\n' span_id:952) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update rebase &&\n' span_id:953) 
          (Token id:Id.Lit_Chars val:'\t git submodule update submodule &&\n' span_id:954) (Token id:Id.Lit_Chars val:'\t git status -s submodule >actual &&\n' span_id:955) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config --unset submodule.submodule.update &&\n'
            span_id: 956
          ) (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:957) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:958)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule init picks up update=none' span_id:965))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:970) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.none.update none &&\n'
            span_id: 971
          ) (Token id:Id.Lit_Chars val:'\t git submodule init none &&\n' span_id:972) 
          (Token
            id: Id.Lit_Chars
            val: '\t test "none" = "$(git config submodule.none.update)"\n'
            span_id: 973
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:974)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update - update=none in .git/config' span_id:981))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:985) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:986) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update none &&\n' span_id:987) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:988) (Token id:Id.Lit_Chars val:'\t  git checkout master &&\n' span_id:989) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:990) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:991) 
          (Token
            id: Id.Lit_Chars
            val: '\t git diff --raw | grep "\tsubmodule" &&\n'
            span_id: 992
          ) (Token id:Id.Lit_Chars val:'\t git submodule update &&\n' span_id:993) 
          (Token
            id: Id.Lit_Chars
            val: '\t git diff --raw | grep "\tsubmodule" &&\n'
            span_id: 994
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:995) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:996) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:997) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config --unset submodule.submodule.update &&\n'
            span_id: 998
          ) (Token id:Id.Lit_Chars val:'\t git submodule update submodule\n' span_id:999) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1000)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update - update=none in .git/config but --checkout given'
            span_id: 1007
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1011) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1012) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update none &&\n' span_id:1013) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1014) (Token id:Id.Lit_Chars val:'\t  git checkout master &&\n' span_id:1015) 
          (Token id:Id.Lit_Chars val:'\t  compare_head\n' span_id:1016) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1017) 
          (Token
            id: Id.Lit_Chars
            val: '\t git diff --raw | grep "\tsubmodule" &&\n'
            span_id: 1018
          ) (Token id:Id.Lit_Chars val:'\t git submodule update --checkout &&\n' span_id:1019) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git diff --raw \\| grep "\tsubmodule" &&\n'
            span_id: 1020
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1021) 
          (Token id:Id.Lit_Chars val:'\t  test_must_fail compare_head\n' span_id:1022) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1023) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config --unset submodule.submodule.update\n'
            span_id: 1024
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1025)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --init skips submodule with update=none'
            span_id: 1032
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1036) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1037) (Token id:Id.Lit_Chars val:'\t git add .gitmodules &&\n' span_id:1038) 
          (Token id:Id.Lit_Chars val:'\t git commit -m ".gitmodules"\n' span_id:1039) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1040) 
          (Token id:Id.Lit_Chars val:'\tgit clone super cloned &&\n' span_id:1041) (Token id:Id.Lit_Chars val:'\t(cd cloned &&\n' span_id:1042) 
          (Token id:Id.Lit_Chars val:'\t git submodule update --init &&\n' span_id:1043) (Token id:Id.Lit_Chars val:'\t test -e submodule/.git &&\n' span_id:1044) 
          (Token id:Id.Lit_Chars val:'\t test_must_fail test -e none/.git\n' span_id:1045) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1046)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update continues after checkout error'
            span_id: 1053
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1057) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1058) (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD &&\n' span_id:1059) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add ../submodule submodule2 &&\n'
            span_id: 1060
          ) (Token id:Id.Lit_Chars val:'\t git submodule init &&\n' span_id:1061) 
          (Token id:Id.Lit_Chars val:'\t git commit -am "new_submodule" &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1063) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git rev-parse --verify HEAD >../expect\n'
            span_id: 1064
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1065) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1066) (Token id:Id.Lit_Chars val:'\t  test_commit "update_submodule" file\n' span_id:1067) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1069) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule2" file\n'
            span_id: 1070
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1071) 
          (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:1072) (Token id:Id.Lit_Chars val:'\t git add submodule2 &&\n' span_id:1073) 
          (Token
            id: Id.Lit_Chars
            val: '\t git commit -m "two_new_submodule_commits" &&\n'
            span_id: 1074
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1075) 
          (Token id:Id.Lit_Chars val:'\t  echo "" > file\n' span_id:1076) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1077) 
          (Token id:Id.Lit_Chars val:'\t git checkout HEAD^ &&\n' span_id:1078) (Token id:Id.Lit_Chars val:'\t test_must_fail git submodule update &&\n' span_id:1079) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1080) (Token id:Id.Lit_Chars val:'\t  git rev-parse --verify HEAD >../actual\n' span_id:1081) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1082) (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:1083) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1084)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update continues after recursive checkout error'
            span_id: 1090
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1094) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1095) (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD &&\n' span_id:1096) 
          (Token id:Id.Lit_Chars val:'\t git checkout master &&\n' span_id:1097) (Token id:Id.Lit_Chars val:'\t git submodule update &&\n' span_id:1098) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1099) (Token id:Id.Lit_Chars val:'\t  git submodule add ../submodule subsubmodule &&\n' span_id:1100) 
          (Token id:Id.Lit_Chars val:'\t  git submodule init &&\n' span_id:1101) (Token id:Id.Lit_Chars val:'\t  git commit -m "new_subsubmodule"\n' span_id:1102) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1103) (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:1104) 
          (Token
            id: Id.Lit_Chars
            val: '\t git commit -m "update_submodule" &&\n'
            span_id: 1105
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1106) 
          (Token id:Id.Lit_Chars val:'\t  (cd subsubmodule &&\n' span_id:1107) (Token id:Id.Lit_Chars val:'\t   test_commit "update_subsubmodule" file\n' span_id:1108) 
          (Token id:Id.Lit_Chars val:'\t  ) &&\n' span_id:1109) (Token id:Id.Lit_Chars val:'\t  git add subsubmodule &&\n' span_id:1110) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule_again" file &&\n'
            span_id: 1111
          ) (Token id:Id.Lit_Chars val:'\t  (cd subsubmodule &&\n' span_id:1112) 
          (Token
            id: Id.Lit_Chars
            val: '\t   test_commit "update_subsubmodule_again" file\n'
            span_id: 1113
          ) (Token id:Id.Lit_Chars val:'\t  ) &&\n' span_id:1114) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule_again_again" file\n'
            span_id: 1115
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1116) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1117) (Token id:Id.Lit_Chars val:'\t  git rev-parse --verify HEAD >../expect &&\n' span_id:1118) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule2_again" file\n'
            span_id: 1119
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1120) 
          (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:1121) (Token id:Id.Lit_Chars val:'\t git add submodule2 &&\n' span_id:1122) 
          (Token id:Id.Lit_Chars val:'\t git commit -m "new_commits" &&\n' span_id:1123) (Token id:Id.Lit_Chars val:'\t git checkout HEAD^ &&\n' span_id:1124) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1125) (Token id:Id.Lit_Chars val:'\t  git checkout HEAD^ &&\n' span_id:1126) 
          (Token id:Id.Lit_Chars val:'\t  (cd subsubmodule &&\n' span_id:1127) (Token id:Id.Lit_Chars val:'\t   echo "" > file\n' span_id:1128) 
          (Token id:Id.Lit_Chars val:'\t  )\n' span_id:1129) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1130) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update --recursive &&\n'
            span_id: 1131
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1132) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git rev-parse --verify HEAD >../actual\n'
            span_id: 1133
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1134) 
          (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:1135) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1136)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update exit immediately in case of merge conflict'
            span_id: 1143
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1147) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1148) (Token id:Id.Lit_Chars val:'\t git checkout master &&\n' span_id:1149) 
          (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD &&\n' span_id:1150) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1151) 
          (Token id:Id.Lit_Chars val:'\t  (cd subsubmodule &&\n' span_id:1152) (Token id:Id.Lit_Chars val:'\t   git reset --hard HEAD\n' span_id:1153) 
          (Token id:Id.Lit_Chars val:'\t  )\n' span_id:1154) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1155) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --recursive &&\n'
            span_id: 1156
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1157) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule_2" file\n'
            span_id: 1158
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1159) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1160) (Token id:Id.Lit_Chars val:'\t  test_commit "update_submodule2_2" file\n' span_id:1161) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1162) (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:1163) 
          (Token id:Id.Lit_Chars val:'\t git add submodule2 &&\n' span_id:1164) (Token id:Id.Lit_Chars val:'\t git commit -m "two_new_submodule_commits" &&\n' span_id:1165) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1166) (Token id:Id.Lit_Chars val:'\t  git checkout master &&\n' span_id:1167) 
          (Token id:Id.Lit_Chars val:'\t  test_commit "conflict" file &&\n' span_id:1168) (Token id:Id.Lit_Chars val:'\t  echo "conflict" > file\n' span_id:1169) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1170) (Token id:Id.Lit_Chars val:'\t git checkout HEAD^ &&\n' span_id:1171) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1172) (Token id:Id.Lit_Chars val:'\t  git rev-parse --verify HEAD >../expect\n' span_id:1173) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update merge &&\n' span_id:1175) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update &&\n'
            span_id: 1176
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1177) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git rev-parse --verify HEAD >../actual\n'
            span_id: 1178
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1179) 
          (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:1180) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1181)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update exit immediately after recursive rebase error'
            span_id: 1188
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1192) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1193) (Token id:Id.Lit_Chars val:'\t git checkout master &&\n' span_id:1194) 
          (Token id:Id.Lit_Chars val:'\t git reset --hard HEAD &&\n' span_id:1195) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1196) 
          (Token id:Id.Lit_Chars val:'\t  git reset --hard HEAD &&\n' span_id:1197) (Token id:Id.Lit_Chars val:'\t  git submodule update --recursive\n' span_id:1198) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1200) 
          (Token
            id: Id.Lit_Chars
            val: '\t  test_commit "update_submodule_3" file\n'
            span_id: 1201
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1202) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1203) (Token id:Id.Lit_Chars val:'\t  test_commit "update_submodule2_3" file\n' span_id:1204) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1205) (Token id:Id.Lit_Chars val:'\t git add submodule &&\n' span_id:1206) 
          (Token id:Id.Lit_Chars val:'\t git add submodule2 &&\n' span_id:1207) (Token id:Id.Lit_Chars val:'\t git commit -m "two_new_submodule_commits" &&\n' span_id:1208) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule &&\n' span_id:1209) (Token id:Id.Lit_Chars val:'\t  git checkout master &&\n' span_id:1210) 
          (Token id:Id.Lit_Chars val:'\t  test_commit "conflict2" file &&\n' span_id:1211) (Token id:Id.Lit_Chars val:'\t  echo "conflict" > file\n' span_id:1212) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1213) (Token id:Id.Lit_Chars val:'\t git checkout HEAD^ &&\n' span_id:1214) 
          (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1215) (Token id:Id.Lit_Chars val:'\t  git rev-parse --verify HEAD >../expect\n' span_id:1216) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\t git config submodule.submodule.update rebase &&\n' span_id:1218) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule update &&\n'
            span_id: 1219
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule2 &&\n' span_id:1220) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git rev-parse --verify HEAD >../actual\n'
            span_id: 1221
          ) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1222) 
          (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:1223) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1224)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'add different submodules to the same path' span_id:1231))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1235) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t git submodule add ../submodule s1 &&\n' span_id:1237) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_must_fail git submodule add ../merging s1\n'
            span_id: 1238
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1239)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule add places git-dir in superprojects git-dir'
            span_id: 1246
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1250) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1251) (Token id:Id.Lit_Chars val:'\t mkdir deeper &&\n' span_id:1252) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add ../submodule deeper/submodule &&\n'
            span_id: 1253
          ) (Token id:Id.Lit_Chars val:'\t (cd deeper/submodule &&\n' span_id:1254) 
          (Token id:Id.Lit_Chars val:'\t  git log > ../../expected\n' span_id:1255) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1256) 
          (Token
            id: Id.Lit_Chars
            val: '\t (cd .git/modules/deeper/submodule &&\n'
            span_id: 1257
          ) (Token id:Id.Lit_Chars val:'\t  git log > ../../../../actual\n' span_id:1258) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1259) (Token id:Id.Lit_Chars val:'\t test_cmp actual expected\n' span_id:1260) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1261)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update places git-dir in superprojects git-dir'
            span_id: 1268
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1272) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1273) (Token id:Id.Lit_Chars val:'\t git commit -m "added submodule"\n' span_id:1274) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1275) (Token id:Id.Lit_Chars val:'\tgit clone super super2 &&\n' span_id:1276) 
          (Token id:Id.Lit_Chars val:'\t(cd super2 &&\n' span_id:1277) (Token id:Id.Lit_Chars val:'\t git submodule init deeper/submodule &&\n' span_id:1278) 
          (Token id:Id.Lit_Chars val:'\t git submodule update &&\n' span_id:1279) (Token id:Id.Lit_Chars val:'\t (cd deeper/submodule &&\n' span_id:1280) 
          (Token id:Id.Lit_Chars val:'\t  git log > ../../expected\n' span_id:1281) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1282) 
          (Token
            id: Id.Lit_Chars
            val: '\t (cd .git/modules/deeper/submodule &&\n'
            span_id: 1283
          ) (Token id:Id.Lit_Chars val:'\t  git log > ../../../../actual\n' span_id:1284) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1285) (Token id:Id.Lit_Chars val:'\t test_cmp actual expected\n' span_id:1286) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1287)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule add places git-dir in superprojects git-dir recursive'
            span_id: 1294
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1298) 
          (Token id:Id.Lit_Chars val:'\t(cd super2 &&\n' span_id:1299) (Token id:Id.Lit_Chars val:'\t (cd deeper/submodule &&\n' span_id:1300) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git submodule add ../submodule subsubmodule &&\n'
            span_id: 1301
          ) (Token id:Id.Lit_Chars val:'\t  (cd subsubmodule &&\n' span_id:1302) 
          (Token id:Id.Lit_Chars val:'\t   git log > ../../../expected\n' span_id:1303) (Token id:Id.Lit_Chars val:'\t  ) &&\n' span_id:1304) 
          (Token
            id: Id.Lit_Chars
            val: '\t  git commit -m "added subsubmodule" &&\n'
            span_id: 1305
          ) (Token id:Id.Lit_Chars val:'\t  git push origin :\n' span_id:1306) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1307) 
          (Token
            id: Id.Lit_Chars
            val: '\t (cd .git/modules/deeper/submodule/modules/subsubmodule &&\n'
            span_id: 1308
          ) (Token id:Id.Lit_Chars val:'\t  git log > ../../../../../actual\n' span_id:1309) 
          (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1310) (Token id:Id.Lit_Chars val:'\t git add deeper/submodule &&\n' span_id:1311) 
          (Token
            id: Id.Lit_Chars
            val: '\t git commit -m "update submodule" &&\n'
            span_id: 1312
          ) (Token id:Id.Lit_Chars val:'\t git push origin : &&\n' span_id:1313) 
          (Token id:Id.Lit_Chars val:'\t test_cmp actual expected\n' span_id:1314) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1315)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update places git-dir in superprojects git-dir recursive'
            span_id: 1322
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1326) 
          (Token id:Id.Lit_Chars val:'\tmkdir super_update_r &&\n' span_id:1327) (Token id:Id.Lit_Chars val:'\t(cd super_update_r &&\n' span_id:1328) 
          (Token id:Id.Lit_Chars val:'\t git init --bare\n' span_id:1329) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1330) 
          (Token id:Id.Lit_Chars val:'\tmkdir subsuper_update_r &&\n' span_id:1331) (Token id:Id.Lit_Chars val:'\t(cd subsuper_update_r &&\n' span_id:1332) 
          (Token id:Id.Lit_Chars val:'\t git init --bare\n' span_id:1333) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1334) 
          (Token id:Id.Lit_Chars val:'\tmkdir subsubsuper_update_r &&\n' span_id:1335) (Token id:Id.Lit_Chars val:'\t(cd subsubsuper_update_r &&\n' span_id:1336) 
          (Token id:Id.Lit_Chars val:'\t git init --bare\n' span_id:1337) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1338) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone subsubsuper_update_r subsubsuper_update_r2 &&\n'
            span_id: 1339
          ) (Token id:Id.Lit_Chars val:'\t(cd subsubsuper_update_r2 &&\n' span_id:1340) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_commit "update_subsubsuper" file &&\n'
            span_id: 1341
          ) (Token id:Id.Lit_Chars val:'\t git push origin master\n' span_id:1342) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1343) (Token id:Id.Lit_Chars val:'\tgit clone subsuper_update_r subsuper_update_r2 &&\n' span_id:1344) 
          (Token id:Id.Lit_Chars val:'\t(cd subsuper_update_r2 &&\n' span_id:1345) (Token id:Id.Lit_Chars val:'\t test_commit "update_subsuper" file &&\n' span_id:1346) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add ../subsubsuper_update_r subsubmodule &&\n'
            span_id: 1347
          ) (Token id:Id.Lit_Chars val:'\t git commit -am "subsubmodule" &&\n' span_id:1348) 
          (Token id:Id.Lit_Chars val:'\t git push origin master\n' span_id:1349) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1350) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone super_update_r super_update_r2 &&\n'
            span_id: 1351
          ) (Token id:Id.Lit_Chars val:'\t(cd super_update_r2 &&\n' span_id:1352) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_commit "update_super" file &&\n'
            span_id: 1353
          ) (Token id:Id.Lit_Chars val:'\t git submodule add ../subsuper_update_r submodule &&\n' span_id:1354) 
          (Token id:Id.Lit_Chars val:'\t git commit -am "submodule" &&\n' span_id:1355) (Token id:Id.Lit_Chars val:'\t git push origin master\n' span_id:1356) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1357) (Token id:Id.Lit_Chars val:'\trm -rf super_update_r2 &&\n' span_id:1358) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone super_update_r super_update_r2 &&\n'
            span_id: 1359
          ) (Token id:Id.Lit_Chars val:'\t(cd super_update_r2 &&\n' span_id:1360) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --init --recursive >actual &&\n'
            span_id: 1361
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t test_i18ngrep "Submodule path .submodule/subsubmodule.: checked out" actual &&\n'
            span_id: 1362
          ) (Token id:Id.Lit_Chars val:'\t (cd submodule/subsubmodule &&\n' span_id:1363) 
          (Token id:Id.Lit_Chars val:'\t  git log > ../../expected\n' span_id:1364) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1365) 
          (Token
            id: Id.Lit_Chars
            val: '\t (cd .git/modules/submodule/modules/subsubmodule\n'
            span_id: 1366
          ) (Token id:Id.Lit_Chars val:'\t  git log > ../../../../../actual\n' span_id:1367) 
          (Token id:Id.Lit_Chars val:'\t )\n' span_id:1368) (Token id:Id.Lit_Chars val:'\t test_cmp actual expected\n' span_id:1369) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1370)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule add properly re-creates deeper level submodules'
            span_id: 1377
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1381) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1382) (Token id:Id.Lit_Chars val:'\t git reset --hard master &&\n' span_id:1383) 
          (Token id:Id.Lit_Chars val:'\t rm -rf deeper/ &&\n' span_id:1384) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule add --force ../submodule deeper/submodule\n'
            span_id: 1385
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1386)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update properly revives a moved submodule'
            span_id: 1393
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1397) 
          (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1398) (Token id:Id.Lit_Chars val:'\t H=$(git rev-parse --short HEAD) &&\n' span_id:1399) 
          (Token id:Id.Lit_Chars val:'\t git commit -am "pre move" &&\n' span_id:1400) (Token id:Id.Lit_Chars val:'\t H2=$(git rev-parse --short HEAD) &&\n' span_id:1401) 
          (Token
            id: Id.Lit_Chars
            val: '\t git status | sed "s/$H/XXX/" >expect &&\n'
            span_id: 1402
          ) (Token id:Id.Lit_Chars val:'\t H=$(cd submodule2; git rev-parse HEAD) &&\n' span_id:1403) 
          (Token id:Id.Lit_Chars val:'\t git rm --cached submodule2 &&\n' span_id:1404) (Token id:Id.Lit_Chars val:'\t rm -rf submodule2 &&\n' span_id:1405) 
          (Token id:Id.Lit_Chars val:'\t mkdir -p "moved/sub module" &&\n' span_id:1406) 
          (Token
            id: Id.Lit_Chars
            val: '\t git update-index --add --cacheinfo 160000 $H "moved/sub module" &&\n'
            span_id: 1407
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config -f .gitmodules submodule.submodule2.path "moved/sub module"\n'
            span_id: 1408
          ) (Token id:Id.Lit_Chars val:'\t git commit -am "post move" &&\n' span_id:1409) 
          (Token id:Id.Lit_Chars val:'\t git submodule update &&\n' span_id:1410) (Token id:Id.Lit_Chars val:'\t git status | sed "s/$H2/XXX/" >actual &&\n' span_id:1411) 
          (Token id:Id.Lit_Chars val:'\t test_cmp expect actual\n' span_id:1412) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1413)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update can handle symbolic links in pwd'
            span_id: 1422
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1426) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p linked/dir &&\n' span_id:1427) (Token id:Id.Lit_Chars val:'\tln -s linked/dir linkto &&\n' span_id:1428) 
          (Token id:Id.Lit_Chars val:'\t(cd linkto &&\n' span_id:1429) (Token id:Id.Lit_Chars val:'\t git clone "$TRASH_DIRECTORY"/super_update_r2 super &&\n' span_id:1430) 
          (Token id:Id.Lit_Chars val:'\t (cd super &&\n' span_id:1431) (Token id:Id.Lit_Chars val:'\t  git submodule update --init --recursive\n' span_id:1432) 
          (Token id:Id.Lit_Chars val:'\t )\n' span_id:1433) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1434)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update clone shallow submodule' span_id:1441))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1445) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super3" &&\n'
            span_id: 1446
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tfirst=$(git -C cloned submodule status submodule |cut -c2-41) &&\n'
            span_id: 1447
          ) (Token id:Id.Lit_Chars val:'\tsecond=$(git -C submodule rev-parse HEAD) &&\n' span_id:1448) 
          (Token
            id: Id.Lit_Chars
            val: '\tcommit_count=$(git -C submodule rev-list --count $first^..$second) &&\n'
            span_id: 1449
          ) (Token id:Id.Lit_Chars val:'\tgit clone cloned super3 &&\n' span_id:1450) 
          (Token id:Id.Lit_Chars val:'\tpwd=$(pwd) &&\n' span_id:1451) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1452) 
          (Token id:Id.Lit_Chars val:'\t\tcd super3 &&\n' span_id:1453) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsed -e "s#url = ../#url = file://$pwd/#" <.gitmodules >.gitmodules.tmp &&\n'
            span_id: 1454
          ) (Token id:Id.Lit_Chars val:'\t\tmv -f .gitmodules.tmp .gitmodules &&\n' span_id:1455) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit submodule update --init --depth=$commit_count &&\n'
            span_id: 1456
          ) (Token id:Id.Lit_Chars val:'\t\ttest 1 = $(git -C submodule log --oneline | wc -l)\n' span_id:1457) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1458)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update clone shallow submodule outside of depth'
            span_id: 1465
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1469) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super3" &&\n'
            span_id: 1470
          ) (Token id:Id.Lit_Chars val:'\tgit clone cloned super3 &&\n' span_id:1471) 
          (Token id:Id.Lit_Chars val:'\tpwd=$(pwd) &&\n' span_id:1472) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1473) 
          (Token id:Id.Lit_Chars val:'\t\tcd super3 &&\n' span_id:1474) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsed -e "s#url = ../#url = file://$pwd/#" <.gitmodules >.gitmodules.tmp &&\n'
            span_id: 1475
          ) (Token id:Id.Lit_Chars val:'\t\tmv -f .gitmodules.tmp .gitmodules &&\n' span_id:1476) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git submodule update --init --depth=1 2>actual &&\n'
            span_id: 1477
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_i18ngrep "Direct fetching of that commit failed." actual &&\n'
            span_id: 1478
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit -C ../submodule config uploadpack.allowReachableSHA1InWant true &&\n'
            span_id: 1479
          ) (Token id:Id.Lit_Chars val:'\t\tgit submodule update --init --depth=1 >actual &&\n' span_id:1480) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest 1 = $(git -C submodule log --oneline | wc -l)\n'
            span_id: 1481
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1482)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'submodule update --recursive drops module name before recursing'
            span_id: 1489
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1493) 
          (Token id:Id.Lit_Chars val:'\t(cd super2 &&\n' span_id:1494) (Token id:Id.Lit_Chars val:'\t (cd deeper/submodule/subsubmodule &&\n' span_id:1495) 
          (Token id:Id.Lit_Chars val:'\t  git checkout HEAD^\n' span_id:1496) (Token id:Id.Lit_Chars val:'\t ) &&\n' span_id:1497) 
          (Token
            id: Id.Lit_Chars
            val: '\t git submodule update --recursive deeper/submodule >actual &&\n'
            span_id: 1498
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t test_i18ngrep "Submodule path .deeper/submodule/subsubmodule.: checked out" actual\n'
            span_id: 1499
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1500)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'submodule update can be run in parallel' span_id:1507))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1511) 
          (Token id:Id.Lit_Chars val:'\t(cd super2 &&\n' span_id:1512) 
          (Token
            id: Id.Lit_Chars
            val: '\t GIT_TRACE=$(pwd)/trace.out git submodule update --jobs 7 &&\n'
            span_id: 1513
          ) (Token id:Id.Lit_Chars val:'\t grep "7 tasks" trace.out &&\n' span_id:1514) 
          (Token
            id: Id.Lit_Chars
            val: '\t git config submodule.fetchJobs 8 &&\n'
            span_id: 1515
          ) (Token id:Id.Lit_Chars val:'\t GIT_TRACE=$(pwd)/trace.out git submodule update &&\n' span_id:1516) 
          (Token id:Id.Lit_Chars val:'\t grep "8 tasks" trace.out &&\n' span_id:1517) 
          (Token
            id: Id.Lit_Chars
            val: '\t GIT_TRACE=$(pwd)/trace.out git submodule update --jobs 9 &&\n'
            span_id: 1518
          ) (Token id:Id.Lit_Chars val:'\t grep "9 tasks" trace.out\n' span_id:1519) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1520)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git clone passes the parallel jobs config on to submodules'
            span_id: 1527
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1531) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf super4" &&\n'
            span_id: 1532
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tGIT_TRACE=$(pwd)/trace.out git clone --recurse-submodules --jobs 7 . super4 &&\n'
            span_id: 1533
          ) (Token id:Id.Lit_Chars val:'\tgrep "7 tasks" trace.out &&\n' span_id:1534) 
          (Token id:Id.Lit_Chars val:'\trm -rf super4 &&\n' span_id:1535) (Token id:Id.Lit_Chars val:'\tgit config --global submodule.fetchJobs 8 &&\n' span_id:1536) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE=$(pwd)/trace.out git clone --recurse-submodules . super4 &&\n'
            span_id: 1537
          ) (Token id:Id.Lit_Chars val:'\tgrep "8 tasks" trace.out &&\n' span_id:1538) 
          (Token id:Id.Lit_Chars val:'\trm -rf super4 &&\n' span_id:1539) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tGIT_TRACE=$(pwd)/trace.out git clone --recurse-submodules --jobs 9 . super4 &&\n'
            span_id: 1540
          ) (Token id:Id.Lit_Chars val:'\tgrep "9 tasks" trace.out &&\n' span_id:1541) 
          (Token id:Id.Lit_Chars val:'\trm -rf super4\n' span_id:1542)
        )
      }
    )
    (C {(test_done)})
  ]
)