java - jgitblame 文件的某些行具有 null 提交 shas

标签 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

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

当前使用: jgit-3.1.0.201310021548

最佳答案

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

以下内容对我有用:

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

关于java - jgitblame 文件的某些行具有 null 提交 shas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036925/

相关文章:

java - 一个进程中的两个 Jetty 嵌入式服务器实例

c# - 如何绕过命令行长度限制?

windows - UWP 在图像上放置文本 block

java - 如何在 JSP 文件中以表格格式显示列表内容?

java - 如何使用 ASM 检查方法的局部变量?

ruby-on-rails - 如何克隆和运行其他用户的 Rails 应用程序

git - 如何在postgresql中存储类似git分支的数据结构?

git - Jenkins git 插件 : How to configure different fetch and push git remotes?

java - 无法在 Eclipse 中使用 Tomcat 服务器

c++ - 如何创建多列列表框?