jgit blame对文件的某些行有null commit shas

时间:2013-11-17 22:18:27

标签: java windows git jgit core.autocrlf

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

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尝试了true和false,但我仍然遇到同样的问题。

目前正在使用: jgit-3.1.0.201310021548

1 个答案:

答案 0 :(得分:0)

我在使用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();