[gclient] Cache rev-list HEAD call

This optimization saves about 9% of overall gclient sync on
chromium/src.

R=gavinmak@google.com

Change-Id: I4700e9db9e91a69746e212f6f04376dfb38bef91
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5147495
Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
Reviewed-by: Gavin Mak <gavinmak@google.com>
changes/95/5147495/2
Josip Sokcevic 2 years ago committed by LUCI CQ
parent 1bdc5c8db4
commit 42b995792c

@ -1116,15 +1116,18 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
options.revision = revision_override
self._used_revision = options.revision
self._used_scm = self.CreateSCM(out_cb=work_queue.out_cb)
latest_commit = None
if command != 'update' or self.GetScmName() != 'git':
self._got_revision = self._used_scm.RunCommand(
command, options, args, file_list)
else:
# We are running update.
try:
start = time.time()
sync_status = metrics_utils.SYNC_STATUS_FAILURE
self._got_revision = self._used_scm.RunCommand(
command, options, args, file_list)
latest_commit = self._got_revision
sync_status = metrics_utils.SYNC_STATUS_SUCCESS
finally:
url, revision = gclient_utils.SplitUrlRevision(self.url)
@ -1146,7 +1149,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
latest_commit = self._used_scm.apply_patch_ref(
patch_repo, patch_ref, target_branch, options,
file_list)
else:
elif latest_commit is None:
latest_commit = self._used_scm.revinfo(None, None, None)
existing_sync_commits = json.loads(
os.environ.get(PREVIOUS_SYNC_COMMITS, '{}'))

Loading…
Cancel
Save