有时,当我执行以下操作时:
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();