List<CommittedChangeList> (ChangeBrowserSettings changeBrowserSettings, @NotNull RepositoryLocation repositoryLocation, int maxCount) { VirtualFile root = ((HgRepositoryLocation)repositoryLocation).getRoot(); HgFile hgFile = new HgFile(root, VcsUtil.getFilePath(root.getPath())); List<CommittedChangeList> result = new LinkedList<>(); HgLogCommand hgLogCommand = new HgLogCommand(project); hgLogCommand.setLogFile(false); List<String> args = null; if (changeBrowserSettings != null) { HgLogArgsBuilder argsBuilder = new HgLogArgsBuilder(changeBrowserSettings); args = argsBuilder.getLogArgs(); if (args.isEmpty()) { maxCount = maxCount == 0 ? VcsConfiguration.getInstance(project).MAXIMUM_HISTORY_ROWS : maxCount; } } final List<HgFileRevision> localRevisions; localRevisions = hgLogCommand.execute(hgFile, maxCount == 0 ? -1 : maxCount, true, args); Collections.reverse(localRevisions); for (HgFileRevision revision : localRevisions) { HgRevisionNumber vcsRevisionNumber = revision.getRevisionNumber(); List<? extends HgRevisionNumber> parents = vcsRevisionNumber.getParents(); HgRevisionNumber firstParent = parents.isEmpty() ? null : parents.get(0); // can have no parents if it is a root List<Change> changes = new ArrayList<>(); for (String file : revision.getModifiedFiles()) { changes.add(createChange(root, file, firstParent, file, vcsRevisionNumber, FileStatus.MODIFIED)); } for (String file : revision.getAddedFiles()) { changes.add(createChange(root, null, null, file, vcsRevisionNumber, FileStatus.ADDED)); } for (String file : revision.getDeletedFiles()) { changes.add(createChange(root, file, firstParent, null, vcsRevisionNumber, FileStatus.DELETED)); } for (Map.Entry<String, String> copiedFile : revision.getMovedFiles().entrySet()) { changes .add(createChange(root, copiedFile.getKey(), firstParent, copiedFile.getValue(), vcsRevisionNumber, HgChangeProvider.RENAMED)); } result.add(new HgCommittedChangeList(myVcs, vcsRevisionNumber, revision.getBranchName(), revision.getCommitMessage(), revision.getAuthor(), revision.getRevisionDate(), changes)); } Collections.reverse(result); return result; }