【发布时间】:2013-06-15 05:33:31
【问题描述】:
我正在尝试使用 jGit 获取存储库中的所有提交,不仅是我可以通过头或标签访问的提交,还包括所有尚未被垃圾收集的提交。有没有办法用 jGit 以有效的方式做到这一点?
更新以更好地描述实际用例
我正在开发一个基于 FUSE 的文件系统,它提供了 Git 历史的文件系统视图,请参阅https://github.com/centic9/JGitFS/ 了解第一个版本(仅限 Linux/Mac)。
有了这个,我为提交提供了“虚拟”子目录,即我正在创建一个如下所示的目录结构
/commit
00
abcd..
bcde..
ae
bdas..
在提交 ID 下,虚拟文件系统提供了提交时的源文件。
Refs/Tags 以符号链接的形式提供,指向该 ref/tag 的实际提交 HEAD:
/branch
master -> ../commit/00/abcd...
bugfix -> ../commit/ae/bdas...
/tag
version_1 -> ../commit/00/bcde...
为了使这个文件系统更快,我需要一种方法来快速迭代存储库中的所有提交。像我现在这样分别查看每个标签和 ref 是次优的,因为如果 ref 共享一个共同的历史(他们几乎总是这样做!),我会多次查看相同的提交。
最好我想获得所有仍然可用的提交的简单列表,而不仅仅是属于分支的提交,这样您甚至可以查看 refs/tags 无法再访问的版本。
【问题讨论】:
-
感谢您的链接,不过我正在寻找使用 jgit 的解决方案,而不是命令行工具。