summaryrefslogtreecommitdiffstats
path: root/subcmds/init.py
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2020-05-20 16:03:45 -0700
committerJonathan Nieder <jrn@google.com>2020-05-21 19:47:36 +0000
commitd79a4bc51b6ca5b47bbea861143c72bccc0ad13a (patch)
treef2d8de86fc76c9207af7be2b0c7ff683471df761 /subcmds/init.py
parent682f0b6426a06ed1e89b130d50c6521b1c67d529 (diff)
downloadgit-repo-d79a4bc51b6ca5b47bbea861143c72bccc0ad13a.tar.gz
Make partial clone imply no-clone-bundle by default.
For large projects, clone bundle is useful because it provided a way to efficiently transfer a large portion of git objects through CDN, without needing to interact with git server. However, with partial clones, the intention is to not download most of the objects, so the use of clone bundles would defeat the space savings normally seen with partial clones, as they are downloaded before the first fetch. A new option, --clone-bundle is added to override this behavior. Add a new repo.clonebundle variable which remembers the choice if explicitly given from command line at repo init. Change-Id: I03638474af303a82af34579e16cd4700690b5f43 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268452 Tested-by: Xin Li <delphij@google.com> Reviewed-by: Jonathan Nieder <jrn@google.com>
Diffstat (limited to 'subcmds/init.py')
-rw-r--r--subcmds/init.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/subcmds/init.py b/subcmds/init.py
index ce8b0187..eb82e2e4 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -155,9 +155,11 @@ to update the working directory files.
155 help='restrict manifest projects to ones with a specified ' 155 help='restrict manifest projects to ones with a specified '
156 'platform group [auto|all|none|linux|darwin|...]', 156 'platform group [auto|all|none|linux|darwin|...]',
157 metavar='PLATFORM') 157 metavar='PLATFORM')
158 g.add_option('--clone-bundle', action='store_true',
159 help='force use of /clone.bundle on HTTP/HTTPS (default if not --partial-clone)')
158 g.add_option('--no-clone-bundle', 160 g.add_option('--no-clone-bundle',
159 dest='clone_bundle', default=True, action='store_false', 161 dest='clone_bundle', action='store_false',
160 help='disable use of /clone.bundle on HTTP/HTTPS') 162 help='disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)')
161 g.add_option('--no-tags', 163 g.add_option('--no-tags',
162 dest='tags', default=True, action='store_false', 164 dest='tags', default=True, action='store_false',
163 help="don't fetch tags in the manifest") 165 help="don't fetch tags in the manifest")
@@ -303,6 +305,11 @@ to update the working directory files.
303 else: 305 else:
304 opt.clone_filter = None 306 opt.clone_filter = None
305 307
308 if opt.clone_bundle is None:
309 opt.clone_bundle = False if opt.partial_clone else True
310 else:
311 m.config.SetString('repo.clonebundle', 'true' if opt.clone_bundle else 'false')
312
306 if opt.submodules: 313 if opt.submodules:
307 m.config.SetString('repo.submodules', 'true') 314 m.config.SetString('repo.submodules', 'true')
308 315