Как получить информацию о Git-представлении текущей строки текущего файла - PullRequest
0 голосов
/ 04 июня 2019

Как получить информацию о Git-представлении текущей строки текущего файла, я хочу получить имя автора автора

У меня есть текущий файл и номер текущей строки.

 @Override
    public void actionPerformed(AnActionEvent e) {
        final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
        final Document document = editor.getDocument();

        FileDocumentManager fileDocumentManager = FileDocumentManager.getInstance();
        VirtualFile currentFile = fileDocumentManager.getFile(document);


        if (e.getProject() == null || currentFile == null) {
            return;
        }
        final PsiFile psiFile = PsiManager.getInstance(e.getProject()).findFile(currentFile);
        String path = psiFile.getVirtualFile().getPath();
        path = path.replace(e.getProject().getBasePath(), "");
        BookMarkXPersistentStateComponent service = BookMarkXPersistentStateComponent.getInstance();
        String projectName = e.getProject().getName();
        int currentLineNumber = editor.getCaretModel().getLogicalPosition().line;
        service.addBookMark(new BookmarkXItemState(projectName, path, currentLineNumber, new Date()));
    }

1 Ответ

0 голосов
/ 11 июня 2019

Если я правильно понял вопрос, вы ищете информацию об аннотациях (обвинениях).

Если вам нужна эта информация только для одной строки, вы можете получить ее непосредственно из git, запустив пользовательскую команду git, например git log -n 1 -L <line-number>,<line-number>:<path-to-file>. Подробнее см. git-log help .

Чтобы выполнить эту команду, используйте GitHandler class.

Вы также можете использовать встроенную функцию аннотаций IntelliJ для получения этой информации, однако для этого сначала потребуется загрузка аннотаций всего файла. Чтобы пойти по этому пути, отметьте com.intellij.openapi.vcs.annotate.AnnotationProvider После аннотирования файла через провайдера вы можете использовать com.intellij.openapi.vcs.annotate.FileAnnotation.CurrentFileRevisionProvider#getRevision, из которого вы можете получить com.intellij.openapi.vcs.history.VcsFileRevision#getAuthor

Кроме того, взгляните на https://intellij -support.jetbrains.com / hc / en-us / community / posts / 360004109859 - VcsUtil-getVcsFor-return-null

...