From 17833322d9e0c650310e55f806d5e3545c265c2a Mon Sep 17 00:00:00 2001 From: Jason Chang Date: Tue, 23 May 2023 13:06:55 -0700 Subject: Add envar to replace shallow clones with partial An investigation go/git-repo-shallow shows a number of problems when doing a shallow git fetch/clone. This change introduces an environment variable REPO_ALLOW_SHALLOW. When this environment variable is set to 1 during a repo init or repo sync all shallow git fetch commands are replaced with partial fetch commands. Any shallow repository needing update is unshallowed. This behavior continues until a subsequent repo sync command is run with REPO_ALLOW_SHALLOW set to 1. Bug: b/274340522 Change-Id: I1c3188270629359e52449788897d9d4988ebf280 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/374754 Reviewed-by: Josip Sokcevic Tested-by: Jason Chang --- subcmds/init.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'subcmds/init.py') diff --git a/subcmds/init.py b/subcmds/init.py index 9946466d..6d7fd857 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -20,6 +20,8 @@ from command import InteractiveCommand, MirrorSafeCommand from git_command import git_require, MIN_GIT_VERSION_SOFT, MIN_GIT_VERSION_HARD from wrapper import Wrapper +_REPO_ALLOW_SHALLOW = os.environ.get("REPO_ALLOW_SHALLOW") + class Init(InteractiveCommand, MirrorSafeCommand): COMMON = True @@ -125,6 +127,9 @@ to update the working directory files. # manifest project is special and is created when instantiating the # manifest which happens before we parse options. self.manifest.manifestProject.clone_depth = opt.manifest_depth + clone_filter_for_depth = ( + "blob:none" if (_REPO_ALLOW_SHALLOW == "0") else None + ) if not self.manifest.manifestProject.Sync( manifest_url=opt.manifest_url, manifest_branch=opt.manifest_branch, @@ -140,6 +145,7 @@ to update the working directory files. partial_clone=opt.partial_clone, clone_filter=opt.clone_filter, partial_clone_exclude=opt.partial_clone_exclude, + clone_filter_for_depth=clone_filter_for_depth, clone_bundle=opt.clone_bundle, git_lfs=opt.git_lfs, use_superproject=opt.use_superproject, -- cgit v1.2.3-54-g00ecf