@Override public int compareHeads(int head1, int head2) { if (head1 == head2) { return 0; } Collection<VcsRef> refs1 = myRefsModel.refsToCommit(head1); Collection<VcsRef> refs2 = myRefsModel.refsToCommit(head2); boolean firstEmpty = isEmptyRefs(refs1, head1); boolean secondEmpty = isEmptyRefs(refs2, head2); if (firstEmpty && secondEmpty) { return 0; } if (firstEmpty) { return -1; } if (secondEmpty) { return 1; } VcsLogRefManager refManager1 = getRefManager(refs1); VcsLogRefManager refManager2 = getRefManager(refs2); if (!refManager1.equals(refManager2)) { return 0; } Map<VcsRef, Boolean> positions = ContainerUtil.newHashMap(); for (VcsRef ref : refs1) { positions.put(ref, true); } for (VcsRef ref : refs2) { positions.put(ref, false); } VcsRef firstRef = refManager1.sort(positions.keySet()).get(0); return positions.get(firstRef) ? 1 : -1; }