有时,当我执行以下操作时:

BlameCommand blamer = new BlameCommand(repo);
ObjectId commitID = repo.resolve("head");
blamer.setStartCommit("head");
blamer.setFilePath(fileName);
BlameResult blame = blamer.call();
RevCommit commit = blame.getSourceCommit(0); //set to first line but can be random line of file


从示例代码的最后一行获得的提交为null;它并不总是null,只是在某些文件的某些行上。我怀疑它与CR / LF问题有关,因为我在Windows计算机上运行此代码,因此我尝试更改全局和存储库配置core.autocrlf值。我为core.autocrlf尝试了对与错,但是我仍然遇到同样的问题。

目前正在使用:
jgit-3.1.0.201310021548

最佳答案

我在使用BlameCommand的jgit-cookbook处添加了一个代码段,在该代码段中可以正常工作,在您的示例代码中,setStartCommit()是错误的,应该是commitID。

以下对我有用:

    BlameCommand blamer = new BlameCommand(repository);
    ObjectId commitID = repository.resolve("HEAD");
    blamer.setStartCommit(commitID);
    blamer.setFilePath("README.md");
    BlameResult blame = blamer.call();

09-04 19:01