From af8fb132d50bc76386677140ebeaf323f0f5d4e1 Mon Sep 17 00:00:00 2001 From: LaMont Jones Date: Wed, 31 Aug 2022 20:21:25 +0000 Subject: [PATCH] Revert "project: initialize new manifests in temp dirs" This reverts commit 07d21e6bde9bd7efdfb8f25f2ed23f023daa5c1f. Reason for revert: crbug.com/gerrit/16230, b/244467766 - breaks aosp-master-with-phones case Change-Id: Id967d92f8622c2c13356b09e46ece9f20040aabc Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/344314 Tested-by: LaMont Jones Reviewed-by: Xin Li --- project.py | 42 +++++------------------------------------- 1 file changed, 5 insertions(+), 37 deletions(-) diff --git a/project.py b/project.py index ab449f0..2b57a5f 100644 --- a/project.py +++ b/project.py @@ -2794,35 +2794,6 @@ class Project(object): else: raise - def _InitialCheckoutStart(self): - """Called when checking out a project for the first time. - - This will use temporary non-visible paths so we can be safely interrupted - without leaving incomplete state behind. - """ - paths = [f'{x}.tmp' for x in (self.relpath, self.worktree, self.gitdir, self.objdir)] - for p in paths: - platform_utils.rmtree(p, ignore_errors=True) - self.UpdatePaths(*paths) - - def _InitialCheckoutFinalizeNetworkHalf(self): - """Finalize the object dirs after network syncing works.""" - # Once the network half finishes, we can move the objects into the right - # place by removing the ".tmp" suffix on the dirs. - platform_utils.rmtree(self.gitdir[:-4], ignore_errors=True) - os.rename(self.gitdir, self.gitdir[:-4]) - self.UpdatePaths(self.relpath, self.worktree, self.gitdir[:-4], self.objdir[:-4]) - - def _InitialCheckoutFinalizeLocalHalf(self): - """Finalize the initial checkout and make it available.""" - assert self.gitdir == self.objdir - # Once the local half finishes, we can move the manifest dir into the right - # place by removing the ".tmp" suffix on the dirs. - platform_utils.rmtree(self.worktree[:-4], ignore_errors=True) - os.rename(self.worktree, self.worktree[:-4]) - self.UpdatePaths( - self.relpath[:-4], self.worktree[:-4], self.gitdir, self.objdir) - def _InitGitWorktree(self): """Init the project using git worktrees.""" self.bare_git.worktree('prune') @@ -3709,8 +3680,6 @@ class ManifestProject(MetaProject): (GitConfig.ForUser().UrlInsteadOf(manifest_url),), file=sys.stderr) - self._InitialCheckoutStart() - # The manifest project object doesn't keep track of the path on the # server where this git is located, so let's save that here. mirrored_manifest_git = None @@ -3870,14 +3839,16 @@ class ManifestProject(MetaProject): partial_clone_exclude=self.manifest.PartialCloneExclude): r = self.GetRemote() print('fatal: cannot obtain manifest %s' % r.url, file=sys.stderr) + + # Better delete the manifest git dir if we created it; otherwise next + # time (when user fixes problems) we won't go through the "is_new" logic. + if is_new: + platform_utils.rmtree(self.gitdir) return False if manifest_branch: self.MetaBranchSwitch(submodules=submodules) - if is_new: - self._InitialCheckoutFinalizeNetworkHalf() - syncbuf = SyncBuffer(self.config) self.Sync_LocalHalf(syncbuf, submodules=submodules) syncbuf.Finish() @@ -3900,9 +3871,6 @@ class ManifestProject(MetaProject): with open(dest, 'wb') as f: f.write(manifest_data) - if is_new: - self._InitialCheckoutFinalizeLocalHalf() - try: self.manifest.Link(manifest_name) except ManifestParseError as e: