void (@NotNull AnActionEvent e) { final Project project = e.getData(CommonDataKeys.PROJECT); if (project == null) return; final VcsKey vcsKey = e.getData(VcsDataKeys.VCS); if (vcsKey == null || !SvnVcs.getKey().equals(vcsKey)) return; final VcsFileRevision revision = e.getData(VcsDataKeys.VCS_FILE_REVISION); final VirtualFile revisionVirtualFile = e.getData(VcsDataKeys.VCS_VIRTUAL_FILE); if (revision == null || revisionVirtualFile == null) return; final SvnFileRevision svnFileRevision = (SvnFileRevision)revision; final Consumer<String> listener = e.getData(VcsDataKeys.REMOTE_HISTORY_CHANGED_LISTENER); SvnEditCommitMessageAction.askAndEditRevision(svnFileRevision.getRevision().getNumber(), svnFileRevision.getCommitMessage(), svnFileRevision.getChangedRepositoryPath(), project, newMessage -> { svnFileRevision.setCommitMessage(newMessage); if (listener != null) { listener.consume(newMessage); } List<VcsFileRevision> revisions = ProjectLevelVcsManager.getInstance(project).getVcsHistoryCache() .getRevisions(VcsUtil.getFilePath(revisionVirtualFile), vcsKey); for (VcsFileRevision fileRevision : revisions) { if (!(fileRevision instanceof SvnFileRevision)) continue; if (((SvnFileRevision)fileRevision).getRevision().getNumber() == svnFileRevision.getRevision().getNumber()) { ((SvnFileRevision)fileRevision).setCommitMessage(newMessage); break; } } }, true); }