浏览代码

[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>
Josip Sokcevic 1 年之前
父节点
当前提交
42b995792c
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      gclient.py

+ 4 - 1
gclient.py

@@ -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, '{}'))