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