From a94457d1ce04b31f63734a8c8a1dc668668af39d Mon Sep 17 00:00:00 2001 From: Kaushik Lingarkar Date: Mon, 7 Apr 2025 17:08:07 -0700 Subject: Fallback to full sync when depth enabled fetch of a sha1 fails In sha1 mode, when depth is enabled, syncing the revision from upstream may not work because some servers only allow fetching named refs. Fetching a specific sha1 may result in an error like 'server does not allow request for unadvertised object'. In this case, attempt a full sync with depth disabled. Bug: 410825502 Change-Id: If51bcf18b877cd9491706f5bc3d6fd13c0c3d4f3 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/468282 Commit-Queue: Kaushik Lingarkar Tested-by: Kaushik Lingarkar Reviewed-by: Gavin Mak Reviewed-by: Mike Frysinger --- project.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'project.py') diff --git a/project.py b/project.py index bf37a0da..2d802f24 100644 --- a/project.py +++ b/project.py @@ -2755,6 +2755,14 @@ class Project: # field; it doesn't exist, thus abort the optimization attempt # and do a full sync. break + elif depth and is_sha1 and ret == 1: + # In sha1 mode, when depth is enabled, syncing the revision + # from upstream may not work because some servers only allow + # fetching named refs. Fetching a specific sha1 may result + # in an error like 'server does not allow request for + # unadvertised object'. In this case, attempt a full sync + # without depth. + break elif ret < 0: # Git died with a signal, exit immediately. break -- cgit v1.2.3-54-g00ecf