Set<VcsRef> (@NotNull VirtualFile root) { if (myProject.isDisposed()) { return Collections.emptySet(); } HgRepository repository = getHgRepoManager(myProject).getRepositoryForRoot(root); if (repository == null) { LOG.error("Repository not found for root " + root); return Collections.emptySet(); } repository.update(); Map<String, LinkedHashSet<Hash>> branches = repository.getBranches(); Set<String> openedBranchNames = repository.getOpenedBranches(); Collection<HgNameWithHashInfo> bookmarks = repository.getBookmarks(); Collection<HgNameWithHashInfo> tags = repository.getTags(); Collection<HgNameWithHashInfo> localTags = repository.getLocalTags(); Collection<HgNameWithHashInfo> mqAppliedPatches = repository.getMQAppliedPatches(); Set<VcsRef> refs = new HashSet<>(branches.size() + bookmarks.size()); for (Map.Entry<String, LinkedHashSet<Hash>> entry : branches.entrySet()) { String branchName = entry.getKey(); boolean opened = openedBranchNames.contains(branchName); for (Hash hash : entry.getValue()) { refs.add(myVcsObjectsFactory.createRef(hash, branchName, opened ? HgRefManager.BRANCH : HgRefManager.CLOSED_BRANCH, root)); } } for (HgNameWithHashInfo bookmarkInfo : bookmarks) { refs.add(myVcsObjectsFactory.createRef(bookmarkInfo.getHash(), bookmarkInfo.getName(), HgRefManager.BOOKMARK, root)); } String currentRevision = repository.getCurrentRevision(); if (currentRevision != null) { // null => fresh repository refs.add(myVcsObjectsFactory.createRef(myVcsObjectsFactory.createHash(currentRevision), HEAD_REFERENCE, HgRefManager.HEAD, root)); } String tipRevision = repository.getTipRevision(); if (tipRevision != null) { // null => fresh repository refs.add(myVcsObjectsFactory.createRef(myVcsObjectsFactory.createHash(tipRevision), TIP_REFERENCE, HgRefManager.TIP, root)); } for (HgNameWithHashInfo tagInfo : tags) { refs.add(myVcsObjectsFactory.createRef(tagInfo.getHash(), tagInfo.getName(), HgRefManager.TAG, root)); } for (HgNameWithHashInfo localTagInfo : localTags) { refs.add(myVcsObjectsFactory.createRef(localTagInfo.getHash(), localTagInfo.getName(), HgRefManager.LOCAL_TAG, root)); } for (HgNameWithHashInfo mqPatchRef : mqAppliedPatches) { refs.add(myVcsObjectsFactory.createRef(mqPatchRef.getHash(), mqPatchRef.getName(), HgRefManager.MQ_APPLIED_TAG, root)); } return refs; }