我正在使用Eclipse插件。我尝试使用以下信息提取所有源代码版本(从git repo或svn或任何其他存储库):提交id,日期,作者,消息。Git FileRevision用多行获得评论 - 只获得第一行
而我有提交消息,有多行的问题。 TL; DR我只从具有多行的提交消息中获得第一行。任何想法如何获得整个消息内容?
下面是一个工作代码。只需将您连接SCM的工作区中的项目名称放在第一行即可。
IProject selectedProject = ResourcesPlugin.getWorkspace().getRoot().getProject("testGit");
IJavaProject javaProject = JavaCore.create(selectedProject);
IPackageFragment[] packages = javaProject.getPackageFragments();
for (IPackageFragment mypackage : packages) {
if (mypackage.getKind() == IPackageFragmentRoot.K_SOURCE) {
for (ICompilationUnit unit : mypackage.getCompilationUnits()) {
IResource file = unit.getResource();
IFileRevision[] revisions = getFileRevisions(javaProject, file);
if (revisions != null && revisions.length > 0) {
for (IFileRevision revision : revisions) {
System.out.println(revision.getComment());
System.out.println("============================================");
}
}
}
}
}
private IFileRevision[] getFileRevisions(IJavaProject project, IResource file) {
RepositoryProvider repositoryProvider = RepositoryProvider.getProvider(project.getProject());
IFileRevision[] revisions = null;
IFileHistoryProvider fileHistoryProvider = repositoryProvider.getFileHistoryProvider();
if (fileHistoryProvider == null)
return null;
IFileHistory iFileHistory = fileHistoryProvider.getFileHistoryFor(file,
FileHistoryProvider.SINGLE_LINE_OF_DESCENT, null);
if (iFileHistory != null) {
revisions = iFileHistory.getFileRevisions();
}
return revisions;
}
请注意,你需要创建新的插件项目,而不是Java项目。然后,它需要添加依赖,然后修复缺失的进口:
org.eclipse.jdt.core,
org.eclipse.core.resources,
org.eclipse.team.core,
org.eclipse.team.ui
代码可在任何地方运行。最简单的方法是创建Hello World插件并在构造函数的某处运行代码。