From f014a31780e2d5d860e6f5f3f034e7d3b2ae95b7 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 22 Sep 2017 14:17:13 +0300 Subject: [PATCH] git: do not load HEAD revision multiple times --- .../src/git4idea/status/GitChangeProvider.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/status/GitChangeProvider.java b/plugins/git4idea/src/git4idea/status/GitChangeProvider.java index 8c735afe8935..ddbdc28f7106 100644 --- a/plugins/git4idea/src/git4idea/status/GitChangeProvider.java +++ b/plugins/git4idea/src/git4idea/status/GitChangeProvider.java @@ -195,6 +195,8 @@ public class GitChangeProvider implements ChangeProvider { public void feedBuilder(final ChangelistBuilder builder) throws VcsException { final VcsKey gitKey = GitVcs.getKey(); + Map baseRevisions = new HashMap<>(); + for (Document document : myFileDocumentManager.getUnsavedDocuments()) { VirtualFile vf = myFileDocumentManager.getFile(document); if (vf == null || !vf.isValid()) continue; @@ -206,7 +208,13 @@ public class GitChangeProvider implements ChangeProvider { final VirtualFile root = myVcsManager.getVcsRootFor(vf); if (root == null) continue; - final GitRevisionNumber beforeRevisionNumber = GitChangeUtils.resolveReference(myProject, root, "HEAD"); + + GitRevisionNumber beforeRevisionNumber = baseRevisions.get(root); + if (beforeRevisionNumber == null) { + beforeRevisionNumber = GitChangeUtils.resolveReference(myProject, root, "HEAD"); + baseRevisions.put(root, beforeRevisionNumber); + } + builder.processChange(new Change(GitContentRevision.createRevision(vf, beforeRevisionNumber, myProject), GitContentRevision.createRevision(vf, null, myProject), FileStatus.MODIFIED), gitKey); }