mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-01-20 16:14:25 +00:00
sync: Recover from errors during read-tree
When repo is initializing a git repository, it calls `git read-tree`. During such operation, git is restoring workspace based on the current index. However, some things can go wrong: a user can run out of disk space, or, in case of partial clone, user may no longer reach the remote host. That will leave affected repository in a bad state with partially checked out workspace. The follow up repo sync won't try to fix such state. This change removes .git symlink, which will force the next `repo sync` to redo Git repository setup. Bug: b/363171216 Bug: b/390161127 Change-Id: I57db4b6cae0ef21826dc7cede4d3bf02cfc3d955 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/447801 Reviewed-by: Scott Lee <ddoman@google.com> Tested-by: Josip Sokcevic <sokcevic@chromium.org> Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
This commit is contained in:
parent
3405446a4e
commit
db111d3924
17
project.py
17
project.py
@ -3443,11 +3443,18 @@ class Project:
|
|||||||
|
|
||||||
# Finish checking out the worktree.
|
# Finish checking out the worktree.
|
||||||
cmd = ["read-tree", "--reset", "-u", "-v", HEAD]
|
cmd = ["read-tree", "--reset", "-u", "-v", HEAD]
|
||||||
if GitCommand(self, cmd).Wait() != 0:
|
try:
|
||||||
raise GitError(
|
if GitCommand(self, cmd).Wait() != 0:
|
||||||
"Cannot initialize work tree for " + self.name,
|
raise GitError(
|
||||||
project=self.name,
|
"Cannot initialize work tree for " + self.name,
|
||||||
)
|
project=self.name,
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
# Something went wrong with read-tree (perhaps fetching
|
||||||
|
# missing blobs), so remove .git to avoid half initialized
|
||||||
|
# workspace from which repo can't recover on its own.
|
||||||
|
platform_utils.remove(dotgit)
|
||||||
|
raise e
|
||||||
|
|
||||||
if submodules:
|
if submodules:
|
||||||
self._SyncSubmodules(quiet=True)
|
self._SyncSubmodules(quiet=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user