sync: --no-clone-bundle disables the clone bundle support
Change-Id: Ia9ed7da8451b273c1be620c3dd0dcad777b29096
diff --git a/project.py b/project.py
index 9b23b11..350a5e3 100644
--- a/project.py
+++ b/project.py
@@ -902,7 +902,11 @@
## Sync ##
- def Sync_NetworkHalf(self, quiet=False, is_new=None, current_branch_only=False):
+ def Sync_NetworkHalf(self,
+ quiet=False,
+ is_new=None,
+ current_branch_only=False,
+ clone_bundle=True):
"""Perform only the network IO portion of the sync process.
Local working directory/branch state is not affected.
"""
@@ -925,7 +929,9 @@
else:
alt_dir = None
- if alt_dir is None and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
+ if clone_bundle \
+ and alt_dir is None \
+ and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
is_new = False
if not self._RemoteFetch(initial=is_new, quiet=quiet, alt_dir=alt_dir,
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 6dcce82..74b3f18 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -86,6 +86,12 @@
The -f/--force-broken option can be used to proceed with syncing
other projects if a project sync fails.
+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.
+
SSH Connections
---------------
@@ -143,6 +149,9 @@
p.add_option('-m', '--manifest-name',
dest='manifest_name',
help='temporary manifest to use for this sync', metavar='NAME.xml')
+ p.add_option('--no-clone-bundle',
+ dest='no_clone_bundle', action='store_true',
+ help='disable use of /clone.bundle on HTTP/HTTPS')
if show_smart:
p.add_option('-s', '--smart-sync',
dest='smart_sync', action='store_true',
@@ -185,8 +194,10 @@
# - We always make sure we unlock the lock if we locked it.
try:
try:
- success = project.Sync_NetworkHalf(quiet=opt.quiet,
- current_branch_only=opt.current_branch_only)
+ success = project.Sync_NetworkHalf(
+ quiet=opt.quiet,
+ current_branch_only=opt.current_branch_only,
+ clone_bundle=not opt.no_clone_bundle)
# Lock around all the rest of the code, since printing, updating a set
# and Progress.update() are not thread safe.