Java Git API、示例 JGit 是否支持查找已重命名的两个提交之间的文件?
以命令行 git 为例,如果我使用
git status
,我可以看到沿着 的视图
renamed: old-file-name -> new-file-name
我希望通过 Java API 调用获得相同的功能(查找旧名称和新名称)。
使用 JGit,您可以获取任意提交、分支和标签之间的差异,并获取已更改文件的旧路径和新路径。对于这些,您可以检查路径是否不同。
执行 Diff 时,类
DiffEntry
提供 oldPath
和 newPath
,您可以比较它们。
请参阅 JavaDoc 了解 DiffEntry.getOldPath() 和 DiffEntry.getNewPath() 以了解确切的语义。
jgit-cookbook有一个可以运行的代码片段DiffRenamedFile.java,重命名检查已完成here。
Git diff 使用重命名分数来计算两个文件之间的差异。
..
//get the diff entries
..
RenameDetector renameDetector = new RenameDetector(repository);
renameDetector.setRenameScore(50);
renameDetector.addAll(diffEntries);
List<DiffEntry> diffEntriesAfterRenameDetector = renameDetector.compute();