我相信我可以使用git ls-files -s <file name>
命令通过命令行获取文件夹中所有文件的SHA值。我想知道在JGit Java库中是否有等效的方法?
PS:我不想自己计算文件的SHA,文件夹中可能有很多文件,所以我需要得到已经存在于git对象中的SHA。此外,我不能执行Runtime.getRuntime().exec("git ls-files -s")
,因为主机不会识别git
本身。
要查看索引的对象ID,可以使用JGit中调用的DirCache
。它允许对其条目进行迭代。
以下示例打印索引中每个文件的对象ID:
DirCache index = repository.lockDirCache();
for (int i = 0; i < index.getEntryCount(); i++) {
DirCacheEntry entry = index.getEntry(i);
System.out.println(entry.getObjectId().getName() + " " + entry.getPathString());
}