如何使用 JGit 库获取 git 存储库文件夹中所有文件的 SHA 值列表
How do I get the list of SHA values of all the files in a folder of my git repo using JGit library
我相信我可以使用 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());
}
我相信我可以使用 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());
}