Java JGit在执行diff命令时返回的文件太多
我正试图针对另一个提交模拟git diff--name status。我按如下方式运行代码Java JGit在执行diff命令时返回的文件太多,java,git,jgit,Java,Git,Jgit,我正试图针对另一个提交模拟git diff--name status。我按如下方式运行代码 ObjectReader ObjectReader=repository.newObjectReader(); CanonicalTreeParser OldTreeItemer=新CanonicalTreeParser(); 重置(objectReader,treeSha); Git-Git=新的Git(存储库); 列表差异=git.diff() .setShowNameAndStatusOnly(真)
ObjectReader ObjectReader=repository.newObjectReader();
CanonicalTreeParser OldTreeItemer=新CanonicalTreeParser();
重置(objectReader,treeSha);
Git-Git=新的Git(存储库);
列表差异=git.diff()
.setShowNameAndStatusOnly(真)
.setOldTree(oldTreeIter)
.call();
其中treeSha
是我比较的提交树的SHA
我的问题是,这会返回一些未修改的文件,并且在针对同一提交运行git diff
时未列出这些文件
我调查了一个文件,发现gitls files-s
返回的哈希值与git hash object
不同。不过,在工作树和我比较的提交中,各自的哈希值是相同的
我还发现git.diff()
将FileTreeIterator
设置为newTree
,并且我的CanonicalTreeParser
返回与git ls files
相同的散列,而FileTreeIterator
返回与git hash object
相同的散列,这就是问题所在
我不知道为什么命令之间的哈希值不同,但即使如此,我的目标也不是使它们相同,而是通过编程获得与我从git diff
中获得的文件相同的文件集,这意味着如果文件仅在工作树中修改,也应该列出它们。我不知道如何在不使用FileTreeIterator
的情况下包含工作树