mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
upload: Suggest full sync if hooks fail with partially synced tree
Pre-upload hooks may fail because of partial syncs. Bug: b/271507654 Change-Id: I124cd386c5af2c34e1dcaa3e86916624e235b1e3 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/383474 Reviewed-by: Mike Frysinger <vapier@google.com> Commit-Queue: Gavin Mak <gavinmak@google.com> Tested-by: Gavin Mak <gavinmak@google.com>
This commit is contained in:
parent
321b7934b5
commit
16109a66b7
@ -1696,7 +1696,7 @@ later is required to fix a server side protocol bug.
|
|||||||
)
|
)
|
||||||
|
|
||||||
self._fetch_times = _FetchTimes(manifest)
|
self._fetch_times = _FetchTimes(manifest)
|
||||||
self._local_sync_state = _LocalSyncState(manifest)
|
self._local_sync_state = LocalSyncState(manifest)
|
||||||
if not opt.local_only:
|
if not opt.local_only:
|
||||||
with multiprocessing.Manager() as manager:
|
with multiprocessing.Manager() as manager:
|
||||||
with ssh.ProxyManager(manager) as ssh_proxy:
|
with ssh.ProxyManager(manager) as ssh_proxy:
|
||||||
@ -1932,7 +1932,7 @@ class _FetchTimes(object):
|
|||||||
platform_utils.remove(self._path, missing_ok=True)
|
platform_utils.remove(self._path, missing_ok=True)
|
||||||
|
|
||||||
|
|
||||||
class _LocalSyncState(object):
|
class LocalSyncState(object):
|
||||||
_LAST_FETCH = "last_fetch"
|
_LAST_FETCH = "last_fetch"
|
||||||
_LAST_CHECKOUT = "last_checkout"
|
_LAST_CHECKOUT = "last_checkout"
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ from git_command import GitCommand
|
|||||||
from git_refs import R_HEADS
|
from git_refs import R_HEADS
|
||||||
from hooks import RepoHook
|
from hooks import RepoHook
|
||||||
from project import ReviewableBranch
|
from project import ReviewableBranch
|
||||||
|
from subcmds.sync import LocalSyncState
|
||||||
|
|
||||||
|
|
||||||
_DEFAULT_UNUSUAL_COMMIT_THRESHOLD = 5
|
_DEFAULT_UNUSUAL_COMMIT_THRESHOLD = 5
|
||||||
@ -804,6 +805,12 @@ Gerrit Code Review: https://www.gerritcodereview.com/
|
|||||||
if not hook.Run(
|
if not hook.Run(
|
||||||
project_list=pending_proj_names, worktree_list=pending_worktrees
|
project_list=pending_proj_names, worktree_list=pending_worktrees
|
||||||
):
|
):
|
||||||
|
if LocalSyncState(manifest).IsPartiallySynced():
|
||||||
|
print(
|
||||||
|
"Partially synced tree detected. Syncing all projects "
|
||||||
|
"may resolve issues you're seeing.",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
ret = 1
|
ret = 1
|
||||||
if ret:
|
if ret:
|
||||||
return ret
|
return ret
|
||||||
|
@ -110,7 +110,7 @@ def test_cli_jobs(argv, jobs_manifest, jobs, jobs_net, jobs_check):
|
|||||||
|
|
||||||
|
|
||||||
class LocalSyncState(unittest.TestCase):
|
class LocalSyncState(unittest.TestCase):
|
||||||
"""Tests for _LocalSyncState."""
|
"""Tests for LocalSyncState."""
|
||||||
|
|
||||||
_TIME = 10
|
_TIME = 10
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ class LocalSyncState(unittest.TestCase):
|
|||||||
|
|
||||||
def _new_state(self, time=_TIME):
|
def _new_state(self, time=_TIME):
|
||||||
with mock.patch("time.time", return_value=time):
|
with mock.patch("time.time", return_value=time):
|
||||||
return sync._LocalSyncState(self.manifest)
|
return sync.LocalSyncState(self.manifest)
|
||||||
|
|
||||||
def test_set(self):
|
def test_set(self):
|
||||||
"""Times are set."""
|
"""Times are set."""
|
||||||
|
Loading…
Reference in New Issue
Block a user