4

我需要使用 JGit 从 Git 存储库中绘制图表。

我一直在考虑遍历提交的不同方法。我需要能够从分支/提交中绘制图形/图形,并且我还需要能够在任意范围内进行,比如从第 200 次提交到第 250 次提交(跳过最近提交的 200 次) .

我应该如何遍历存储库?使用RevWalk? 我想让它保持足够的性能,我想知道是否有一种明确的方法可以很好地做到这一点。

更新:基本上,我正在考虑制作类似的东西git log --graph -n 50 --skip 200,以创建顺序显示 200-250 次提交之间的存储库图表。现在我只想自己做这件事。:)

更新 2:如果我也可以遍历那些悬空的(没有引用),并用灰色绘制它们,那就太好了。

4

2 回答 2

2

是的,我同意你的看法,你应该使用 RevWalk。JGit 提供了类似于日志调用的瓷器 API,但它在较低层提供了有趣的入口点。

它可能比使用瓷器 API 或任何基于 Git 的方法更有效。

我真的不明白你所说的未引用提交是什么意思。那些不在一个分支?

另一件事是我不确定您是否可以一次查询所有提交,我的意思是您应该查询每个分支,但我想您已经想到了。我一直想知道是否有比查询每个分支更快的方法(如果它们很短并且有一个巨大的共同历史,那会浪费很多时间)

于 2012-09-12T14:47:19.757 回答
0

我还没有给你答案,但我一直在重新讨论这个话题,因为我曾经有一个算法在 JGit 2.1.0 (2012-09-19) 上工作得相当好,但是几个月后回到我升级到 JGit 5.5.1 (2019-10-02) 并且图表开始看起来很奇怪和损坏。

我一直在研究 JGit 源代码以寻找线索和信息,这个非常冗长和详细的提交消息似乎深入描述了新算法,我只是还没有掌握它。

https://github.com/eclipse/jgit/commit/7d6dcd4b34fef87d73d7137b2cf66b3e15216a2f

如果我这样做,我会尝试用更具体的东西更新这个答案。

于 2020-02-28T11:10:07.937 回答