如何获取当前文件当前行的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()));
}
答案 0 :(得分:0)
如果我对问题的理解正确,那么您正在寻找注释(非常规)信息。
如果您仅需要单行的此信息,则可以通过运行诸如git log -n 1 -L <line-number>,<line-number>:<path-to-file>
之类的自定义git命令直接从git获得该信息。有关详细信息,请参见git-log help。
要运行此命令,请使用GitHandler
类。
您还可以使用IntelliJ的内置注释功能来获取此信息,但是,这将需要首先加载整个文件的注释。为此,请检查com.intellij.openapi.vcs.annotate.AnnotationProvider
通过提供程序注释文件后,您可以使用com.intellij.openapi.vcs.annotate.FileAnnotation.CurrentFileRevisionProvider#getRevision
,从中可以获得com.intellij.openapi.vcs.history.VcsFileRevision#getAuthor