INFO    git-ws Git('top/top').clone('file://REPOS/top', revision=None, depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/top', 'top/top'), cwd=None) OK stdout=None stderr=None
DEBUG   git-ws GitWS.create('TMP/top', main_path='TMP/top/top', manifest_path=None, group-filters=None)
INFO    git-ws Workspace path=TMP/top main=top
INFO    git-ws AppConfigData(manifest_path='git-ws.toml', color_ui=True, group_filters=None, clone_cache=None, depth=None)
DEBUG   git-ws run(['git', 'branch'], cwd='top/top') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/top').get_branch() = 'main'
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/top') OK stdout=b'origin\tfile://REPOS/top (fetch)\norigin\tfile://REPOS/top (push)\n' stderr=b''
INFO    git-ws Git('top/top').get_url() = 'file://REPOS/top'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep1', url='../dep1'), ProjectSpec(name='dep2', url='../dep2'), ProjectSpec(name='sub/dep4')))
DEBUG   git-ws Project(name='dep1', path='dep1', level=1, url='file://REPOS/dep1')
WARNING git-ws Clone dep1 has no revision!
INFO    git-ws Git('top/dep1').clone('file://REPOS/dep1', revision=None, depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/dep1', 'top/dep1'), cwd=None) OK stdout=None stderr=None
INFO    git-ws Git('top/dep1').submodule_update(init=True, recursive=True)
DEBUG   git-ws run(['git', 'submodule', 'update', '--init', '--recursive'], cwd='top/dep1') OK stdout=None stderr=b''
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep1') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep1').get_branch() = 'main'
DEBUG   git-ws Project(name='dep2', path='dep2', level=1, url='file://REPOS/dep2')
WARNING git-ws Clone dep2 has no revision!
INFO    git-ws Git('top/dep2').clone('file://REPOS/dep2', revision=None, depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/dep2', 'top/dep2'), cwd=None) OK stdout=None stderr=None
INFO    git-ws Git('top/dep2').submodule_update(init=True, recursive=True)
DEBUG   git-ws run(['git', 'submodule', 'update', '--init', '--recursive'], cwd='top/dep2') OK stdout=None stderr=b''
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep2') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep2').get_branch() = 'main'
DEBUG   git-ws Project(name='sub/dep4', path='sub/dep4', level=1, url='file://REPOS/sub/dep4')
WARNING git-ws Clone sub/dep4 has no revision!
INFO    git-ws Git('top/sub/dep4').clone('file://REPOS/sub/dep4', revision=None, depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/sub/dep4', 'top/sub/dep4'), cwd=None) OK stdout=None stderr=None
INFO    git-ws Git('top/sub/dep4').submodule_update(init=True, recursive=True)
DEBUG   git-ws run(['git', 'submodule', 'update', '--init', '--recursive'], cwd='top/sub/dep4') OK stdout=None stderr=b''
DEBUG   git-ws run(['git', 'branch'], cwd='top/sub/dep4') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/sub/dep4').get_branch() = 'main'
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep1') OK stdout=b'origin\tfile://REPOS/dep1 (fetch)\norigin\tfile://REPOS/dep1 (push)\n' stderr=b''
INFO    git-ws Git('top/dep1').get_url() = 'file://REPOS/dep1'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep3', url='../dep3', revision='main'), ProjectSpec(name='top', url='../top')))
DEBUG   git-ws Project(name='dep3', path='dep3', level=2, url='file://REPOS/dep3', revision='main')
INFO    git-ws Git('top/dep3').clone('file://REPOS/dep3', revision='main', depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/dep3', 'top/dep3'), cwd=None) OK stdout=None stderr=None
DEBUG   git-ws run(['git', 'checkout', 'main'], cwd='top/dep3') OK stdout=b"Your branch is up to date with 'origin/main'.\n" stderr=b"Already on 'main'\n"
INFO    git-ws Git('top/dep3').submodule_update(init=True, recursive=True)
DEBUG   git-ws run(['git', 'submodule', 'update', '--init', '--recursive'], cwd='top/dep3') OK stdout=None stderr=b''
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep3') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep3').get_branch() = 'main'
DEBUG   git-ws DUPLICATE Project(name='top', path='top', level=2, url='file://REPOS/top')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep3') OK stdout=b'origin\tfile://REPOS/dep3 (fetch)\norigin\tfile://REPOS/dep3 (push)\n' stderr=b''
INFO    git-ws Git('top/dep3').get_url() = 'file://REPOS/dep3'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='top'),))
DEBUG   git-ws DUPLICATE Project(name='top', path='top', level=3, url='file://REPOS/top')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep2') OK stdout=b'origin\tfile://REPOS/dep2 (fetch)\norigin\tfile://REPOS/dep2 (push)\n' stderr=b''
INFO    git-ws Git('top/dep2').get_url() = 'file://REPOS/dep2'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep3', url='../dep3', revision='main'),))
DEBUG   git-ws DUPLICATE Project(name='dep3', path='dep3', level=2, url='file://REPOS/dep3', revision='main')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/sub/dep4') OK stdout=b'origin\tfile://REPOS/sub/dep4 (fetch)\norigin\tfile://REPOS/sub/dep4 (push)\n' stderr=b''
INFO    git-ws Git('top/sub/dep4').get_url() = 'file://REPOS/sub/dep4'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep5'),))
DEBUG   git-ws Project(name='dep5', path='dep5', level=2, url='file://REPOS/sub/dep5')
WARNING git-ws Clone dep5 has no revision!
INFO    git-ws Git('top/dep5').clone('file://REPOS/sub/dep5', revision=None, depth=None)
DEBUG   git-ws run(('git', 'clone', '--', 'file://REPOS/sub/dep5', 'top/dep5'), cwd=None) OK stdout=None stderr=None
INFO    git-ws Git('top/dep5').submodule_update(init=True, recursive=True)
DEBUG   git-ws run(['git', 'submodule', 'update', '--init', '--recursive'], cwd='top/dep5') OK stdout=None stderr=b''
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep5') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep5').get_branch() = 'main'
DEBUG   git-ws run(['git', 'branch'], cwd='top/top') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('top/top').get_branch() = 'main'
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/top') OK stdout=b'origin\tfile://REPOS/top (fetch)\norigin\tfile://REPOS/top (push)\n' stderr=b''
INFO    git-ws Git('top/top').get_url() = 'file://REPOS/top'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep1', url='../dep1'), ProjectSpec(name='dep2', url='../dep2'), ProjectSpec(name='sub/dep4')))
DEBUG   git-ws Project(name='dep1', path='dep1', level=1, url='../dep1')
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep1') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep1').get_branch() = 'main'
DEBUG   git-ws Project(name='dep2', path='dep2', level=1, url='../dep2')
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep2') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep2').get_branch() = 'main'
DEBUG   git-ws Project(name='sub/dep4', path='sub/dep4', level=1, url='../sub/dep4')
DEBUG   git-ws run(['git', 'branch'], cwd='top/sub/dep4') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/sub/dep4').get_branch() = 'main'
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep1') OK stdout=b'origin\tfile://REPOS/dep1 (fetch)\norigin\tfile://REPOS/dep1 (push)\n' stderr=b''
INFO    git-ws Git('top/dep1').get_url() = 'file://REPOS/dep1'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep3', url='../dep3', revision='main'), ProjectSpec(name='top', url='../top')))
DEBUG   git-ws Project(name='dep3', path='dep3', level=2, url='../dep3', revision='main')
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep3') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep3').get_branch() = 'main'
DEBUG   git-ws DUPLICATE Project(name='top', path='top', level=2, url='../top')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep3') OK stdout=b'origin\tfile://REPOS/dep3 (fetch)\norigin\tfile://REPOS/dep3 (push)\n' stderr=b''
INFO    git-ws Git('top/dep3').get_url() = 'file://REPOS/dep3'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='top'),))
DEBUG   git-ws DUPLICATE Project(name='top', path='top', level=3, url='../top')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/dep2') OK stdout=b'origin\tfile://REPOS/dep2 (fetch)\norigin\tfile://REPOS/dep2 (push)\n' stderr=b''
INFO    git-ws Git('top/dep2').get_url() = 'file://REPOS/dep2'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep3', url='../dep3', revision='main'),))
DEBUG   git-ws DUPLICATE Project(name='dep3', path='dep3', level=2, url='../dep3', revision='main')
DEBUG   git-ws run(['git', 'remote', '-v'], cwd='top/sub/dep4') OK stdout=b'origin\tfile://REPOS/sub/dep4 (fetch)\norigin\tfile://REPOS/sub/dep4 (push)\n' stderr=b''
INFO    git-ws Git('top/sub/dep4').get_url() = 'file://REPOS/sub/dep4'
DEBUG   git-ws ManifestSpec(dependencies=(ProjectSpec(name='dep5'),))
DEBUG   git-ws Project(name='dep5', path='dep5', level=2, url='../dep5')
DEBUG   git-ws run(['git', 'branch'], cwd='top/dep5') OK stdout=b'* main\n' stderr=b''
INFO    git-ws Git('TMP/top/dep5').get_branch() = 'main'
