init: Add --no-clone-bundle option

Bug: Issue 218
Change-Id: I42ba1f5fb9168875da0df6bdf4fe44c8d6498d54
This commit is contained in:
Hu xiuyun 2015-12-11 11:16:41 +08:00 committed by David Pursehouse
parent 438eade413
commit 9711a98d6c
2 changed files with 16 additions and 4 deletions

9
repo
View File

@ -196,6 +196,9 @@ group.add_option('-p', '--platform',
help='restrict manifest projects to ones with a specified ' help='restrict manifest projects to ones with a specified '
'platform group [auto|all|none|linux|darwin|...]', 'platform group [auto|all|none|linux|darwin|...]',
metavar='PLATFORM') metavar='PLATFORM')
group.add_option('--no-clone-bundle',
dest='no_clone_bundle', action='store_true',
help='disable use of /clone.bundle on HTTP/HTTPS')
# Tool # Tool
@ -339,7 +342,7 @@ def _Init(args, gitc_init=False):
can_verify = True can_verify = True
dst = os.path.abspath(os.path.join(repodir, S_repo)) dst = os.path.abspath(os.path.join(repodir, S_repo))
_Clone(url, dst, opt.quiet) _Clone(url, dst, opt.quiet, not opt.no_clone_bundle)
if can_verify and not opt.no_repo_verify: if can_verify and not opt.no_repo_verify:
rev = _Verify(dst, branch, opt.quiet) rev = _Verify(dst, branch, opt.quiet)
@ -577,7 +580,7 @@ def _ImportBundle(local):
os.remove(path) os.remove(path)
def _Clone(url, local, quiet): def _Clone(url, local, quiet, clone_bundle):
"""Clones a git repository to a new subdirectory of repodir """Clones a git repository to a new subdirectory of repodir
""" """
try: try:
@ -607,7 +610,7 @@ def _Clone(url, local, quiet):
_SetConfig(local, _SetConfig(local,
'remote.origin.fetch', 'remote.origin.fetch',
'+refs/heads/*:refs/remotes/origin/*') '+refs/heads/*:refs/remotes/origin/*')
if _DownloadBundle(url, local, quiet): if clone_bundle and _DownloadBundle(url, local, quiet):
_ImportBundle(local) _ImportBundle(local)
_Fetch(url, local, 'origin', quiet) _Fetch(url, local, 'origin', quiet)

View File

@ -61,6 +61,11 @@ directory use as much data as possible from the local reference
directory when fetching from the server. This will make the sync directory when fetching from the server. This will make the sync
go a lot faster by reducing data traffic on the network. go a lot faster by reducing data traffic on the network.
The --no-clone-bundle option disables any attempt to use
$URL/clone.bundle to bootstrap a new Git repository from a
resumeable bundle file on a content delivery network. This
may be necessary if there are problems with the local Python
HTTP client or proxy configuration, but the Git binary works.
Switching Manifest Branches Switching Manifest Branches
--------------------------- ---------------------------
@ -113,6 +118,9 @@ to update the working directory files.
help='restrict manifest projects to ones with a specified ' help='restrict manifest projects to ones with a specified '
'platform group [auto|all|none|linux|darwin|...]', 'platform group [auto|all|none|linux|darwin|...]',
metavar='PLATFORM') metavar='PLATFORM')
g.add_option('--no-clone-bundle',
dest='no_clone_bundle', action='store_true',
help='disable use of /clone.bundle on HTTP/HTTPS')
# Tool # Tool
g = p.add_option_group('repo Version options') g = p.add_option_group('repo Version options')
@ -222,7 +230,8 @@ to update the working directory files.
'in another location.', file=sys.stderr) 'in another location.', file=sys.stderr)
sys.exit(1) sys.exit(1)
if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet): if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet,
clone_bundle=not opt.no_clone_bundle):
r = m.GetRemote(m.remote.name) r = m.GetRemote(m.remote.name)
print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr)