void (final @NotNull FilePath filePath, final @NotNull GitFileRevision rev, final @NotNull Collection<String> parentHashes, final @Nullable List<? extends VcsFileRevision> revisions, final @NotNull Consumer<? super MergeCommitPreCheckInfo> resultHandler) { Project project = myProject; new Task.Backgroundable(project, GitBundle.message("git.history.diff.handler.load.changes.process"), true) { private MergeCommitPreCheckInfo myInfo; @Override public void run(@NotNull ProgressIndicator indicator) { try { VirtualFile root = GitUtil.getRootForFile(project, filePath); boolean fileTouched = wasFileTouched(project, root, rev); Collection<GitFileRevision> parents = findParentRevisions(root, rev, parentHashes, revisions); myInfo = new MergeCommitPreCheckInfo(fileTouched, parents); } catch (VcsException e) { showError(e, GitBundle.message("git.history.diff.handler.git.show.error", rev, filePath)); } } @Override public void onSuccess() { if (myInfo != null) { // if info == null => an exception happened resultHandler.consume(myInfo); } } }.queue(); }