Java Git API(JGit 或其他)是否支持在提交之间查找重命名的文件?

问题描述 投票:0回答:2

Java Git API、示例 JGit 是否支持查找已重命名的两个提交之间的文件?

以命令行 git 为例,如果我使用

git status
,我可以看到沿着

的视图
renamed: old-file-name -> new-file-name

我希望通过 Java API 调用获得相同的功能(查找旧名称和新名称)。

java rename diff git-diff jgit
2个回答
0
投票

使用 JGit,您可以获取任意提交、分支和标签之间的差异,并获取已更改文件的旧路径和新路径。对于这些,您可以检查路径是否不同。

执行 Diff 时,类

DiffEntry
提供
oldPath
newPath
,您可以比较它们。

请参阅 JavaDoc 了解 DiffEntry.getOldPath()DiffEntry.getNewPath() 以了解确切的语义。

jgit-cookbook有一个可以运行的代码片段DiffRenamedFile.java,重命名检查已完成here


0
投票

Git diff 使用重命名分数来计算两个文件之间的差异。

..
//get the diff entries
..

RenameDetector renameDetector = new RenameDetector(repository);
renameDetector.setRenameScore(50);
renameDetector.addAll(diffEntries);
List<DiffEntry> diffEntriesAfterRenameDetector = renameDetector.compute();
© www.soinside.com 2019 - 2024. All rights reserved.