如何使用JGit遍历Git存储库并绘制图形

问题描述 投票:4回答:2

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

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

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

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

更新2:如果我还可以遍历那些悬空的对象(没有参考),并用灰色绘制它们,那将是很好的。

java scala jgit
2个回答
2
投票

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

[可能比使用瓷器API或任何基于Git的方法要有效得多。

我没有真正理解未引用提交的含义。那些不在分支中的人?

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


0
投票

我还没有答案,但是我一直在重新讨论这个话题,因为我以前有一种算法对于JGit 2.1.0(2012-09-19)可以正常使用,但是几个月前,我升级到JGit 5.5.1(2019-10-02),图开始显得怪异和破碎。

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

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

如果可以,我将尝试使用更具体的内容来更新此答案。

© www.soinside.com 2019 - 2024. All rights reserved.