Explorar o código

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 <dpursehouse@collab.net>
Tested-by: Mike Frysinger <vapier@google.com>
Mike Frysinger %!s(int64=6) %!d(string=hai) anos
pai
achega
b610b850ac
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      project.py

+ 7 - 0
project.py

@@ -1499,6 +1499,13 @@ class Project(object):
     """Perform only the local IO portion of the sync process.
     """Perform only the local IO portion of the sync process.
        Network access is not required.
        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)
     self._InitWorkTree(force_sync=force_sync, submodules=submodules)
     all_refs = self.bare_ref.all
     all_refs = self.bare_ref.all
     self.CleanPublishedCache(all_refs)
     self.CleanPublishedCache(all_refs)