From 31b3ea065015ecf2206d78402e930c6a771b34fb Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 5 Aug 2016 20:59:33 +0300 Subject: [PATCH] [vcs-log] restore map from head to root IDEA-159468 In case of fake VP, not every head has a reference on it. So keep roots in a special map for that case. --- .../impl/src/com/intellij/vcs/log/data/RefsModel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/RefsModel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/RefsModel.java index aefc059976ee..3e35adae9e6a 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/RefsModel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/RefsModel.java @@ -18,6 +18,7 @@ public class RefsModel implements VcsLogRefs { @NotNull private final VcsLogStorage myHashMap; @NotNull private final Map myRefs; @NotNull private final TIntObjectHashMap myBestRefForHead; + @NotNull private final TIntObjectHashMap myRootForHead; public RefsModel(@NotNull Map refs, @NotNull Set heads, @@ -27,10 +28,12 @@ public class RefsModel implements VcsLogRefs { myHashMap = hashMap; myBestRefForHead = new TIntObjectHashMap<>(); + myRootForHead = new TIntObjectHashMap<>(); for (int head : heads) { CommitId commitId = myHashMap.getCommitId(head); if (commitId != null) { VirtualFile root = commitId.getRoot(); + myRootForHead.put(head, root); Optional bestRef = myRefs.get(root).refsToCommit(head).stream().min(providers.get(root).getReferenceManager().getBranchLayoutComparator()); if (bestRef.isPresent()) { @@ -50,7 +53,7 @@ public class RefsModel implements VcsLogRefs { @NotNull public VirtualFile rootAtHead(int headIndex) { - return myBestRefForHead.get(headIndex).getRoot(); + return myRootForHead.get(headIndex); } @NotNull