From b610b850ac2d791e193383dd77501565fca60aa4 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 11 Nov 2019 05:10:03 -0500 Subject: [PATCH] sync: add sanity check for local checkouts missing network If you run `repo sync -l foo` without first `repo sync -n foo`, repo sets up an invalid gitdir tree that gets wedged and requires manual recovery. Add a sanity check to abort cleanly first. Change-Id: Iad865ea860a3f1fd2f39ce683fe66bd4380745a5 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/244732 Reviewed-by: David Pursehouse Tested-by: Mike Frysinger --- project.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/project.py b/project.py index 6a48c23a..3d22998e 100755 --- a/project.py +++ b/project.py @@ -1499,6 +1499,13 @@ class Project(object): """Perform only the local IO portion of the sync process. Network access is not required. """ + if not os.path.exists(self.gitdir): + syncbuf.fail(self, + 'Cannot checkout %s due to missing network sync; Run ' + '`repo sync -n %s` first.' % + (self.name, self.name)) + return + self._InitWorkTree(force_sync=force_sync, submodules=submodules) all_refs = self.bare_ref.all self.CleanPublishedCache(all_refs)