diff options
author | Raman Tenneti <rtenneti@google.com> | 2021-04-12 20:57:25 -0700 |
---|---|---|
committer | Raman Tenneti <rtenneti@google.com> | 2021-04-13 15:47:10 +0000 |
commit | f32f243ff8aaabe5287235015e1ce189da0123e3 (patch) | |
tree | 3fe288a6b23c20736b650ad37e3d1b00451b27fe /subcmds/init.py | |
parent | 49de8ef584a074982f3fd86aac8a144f48209807 (diff) | |
download | git-repo-f32f243ff8aaabe5287235015e1ce189da0123e3.tar.gz |
init: Added --partial-clone-exclude option.
partial-clone-exclude option excludes projects during
partial clone. This is a comma-delimited project names
(from manifest.xml). This option is persisted and it
is used by the sync command.
A project that has been unparital'ed will remain unpartial if
that project's name is specified in the --partial-clone-exclude
option. The project name should match exactly.
Added
$ ./run_tests -v
Bug: [google internal] b/175712967
"I can't "unpartial" my androidx-main checkout"
$ rm -rf androidx-main/
$ mkdir androidx-main/
$ cd androidx-main/
$ repo_dev init -u https://android.googlesource.com/platform/manifest -b androidx-main --partial-clone --clone-filter=blob:limit=10M -m default.xml
$ repo_dev sync -c -j8
+ Verify a project is partial
$ cd frameworks/support/
$ git config -l | grep 'partial'
+ Unpartial a project.
$ /google/bin/releases/android/git_repack/git_unpartial
+ Verify project is unpartial
$ git config -l | grep 'partial'
$ cd ../..
+ Exclude the project from being unparial'ed after init and sync.
$ repo_dev init -u https://android.googlesource.com/platform/manifest -b androidx-main --partial-clone --clone-filter=blob:limit=10M --partial-clone-exclude="platform/frameworks/support,platform/frameworks/support-golden" -m default.xml
+ Verify project is unpartial
$ cd frameworks/support/
$ git config -l | grep 'partial'
$ cd ../..
$ repo_dev sync -c -j8
$ cd frameworks/support/
$ git config -l | grep 'partial'
$ cd ../..
+ Remove the project from exclude list and verify that project is partially cloned.
$ repo_dev init -u https://android.googlesource.com/platform/manifest -b androidx-main --partial-clone --clone-filter=blob:limit=10M --partial-clone-exclude= -m default.xml
$ repo_dev sync -c -j8
$ cd frameworks/support/
$ git config -l | grep 'partial'
Change-Id: Id5dba418eba1d3f54b54e826000406534c0ec196
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/303162
Reviewed-by: Mike Frysinger <vapier@google.com>
Tested-by: Raman Tenneti <rtenneti@google.com>
Diffstat (limited to 'subcmds/init.py')
-rw-r--r-- | subcmds/init.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/subcmds/init.py b/subcmds/init.py index 3566b8b6..a23e529d 100644 --- a/subcmds/init.py +++ b/subcmds/init.py | |||
@@ -227,6 +227,9 @@ to update the working directory files. | |||
227 | else: | 227 | else: |
228 | opt.clone_filter = None | 228 | opt.clone_filter = None |
229 | 229 | ||
230 | if opt.partial_clone_exclude is not None: | ||
231 | m.config.SetString('repo.partialcloneexclude', opt.partial_clone_exclude) | ||
232 | |||
230 | if opt.clone_bundle is None: | 233 | if opt.clone_bundle is None: |
231 | opt.clone_bundle = False if opt.partial_clone else True | 234 | opt.clone_bundle = False if opt.partial_clone else True |
232 | else: | 235 | else: |
@@ -242,7 +245,8 @@ to update the working directory files. | |||
242 | clone_bundle=opt.clone_bundle, | 245 | clone_bundle=opt.clone_bundle, |
243 | current_branch_only=opt.current_branch_only, | 246 | current_branch_only=opt.current_branch_only, |
244 | tags=opt.tags, submodules=opt.submodules, | 247 | tags=opt.tags, submodules=opt.submodules, |
245 | clone_filter=opt.clone_filter): | 248 | clone_filter=opt.clone_filter, |
249 | partial_clone_exclude=self.manifest.PartialCloneExclude): | ||
246 | r = m.GetRemote(m.remote.name) | 250 | r = m.GetRemote(m.remote.name) |
247 | print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) | 251 | print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) |
248 | 252 | ||