是否可以远程访问和解析git修订历史记录?

时间:2016-12-28 12:18:51

标签: libgit2 libgit2sharp

我有一个用例,我需要能够检查Git存储库作为Web服务的一部分,并且平均回购大小将非常大 - 1GB +,因为用于视频游戏项目。我需要做一些简单的操作,比如列出修订历史等等。

现在我通过对远程Git主机服务(Github,Bitbucket等)的API调用来实现它。这样可以正常工作,但有一些很棒的Git项目,比如GitVersion,只能使用真正的Git repos,使用libGit2sharp,我不能轻易地编写一个解决方法。

我觉得这会是一个远景,但我想知道是否有人讨论或开始实施libGit2sharp,它通过他们的API与主要的Git主机一起工作。显然,并非libGit2中的所有可用操作都可以使用API​​接口,但至少大多数只读操作应该是。

如果这是一个全新的功能请求 - 我想获得知道libGit2sharp代码库的人的意见,了解这样的功能请求实现起来有多困难。

1 个答案:

答案 0 :(得分:2)

Git仅指定用于获取,推送和创建存档的网络协议。没有其他任何东西可以通过Git协议完成(提供商可能会禁用存档,以便他们可以利用现有的缓存解决方案。)

  

如果这是一个全新的功能请求 - 我希望得到知道libGit2sharp代码库的人的意见,了解这样的功能请求实现起来有多困难。

由于Git没有提供执行这些任务的方法,因此该功能超出范围且不可能。

一旦你尝试而不是做Git,那么你就不会进入每个提供商的API的Git世界。尝试在每个提供者的API之上复制Git操作和git命令本身就是一个完整的项目,并且可能会让您达到这些提供者的API限制,因为对存储库的深入分析通常不是他们提供的原因。这些服务。

更不用说通过HTTP查找每个必要的对象将非常慢,你可能无法从网络中获取一两千兆字节。

但是,如果您只需要一些可以从API本身轻松回答的问题(例如,最新提交及其与不同分支的关系),并且您确实需要GitVersion中的逻辑,那么您可能会更好使其历史分析可插入,以便您可以从API查找中输入数据。

我不熟悉GitVersion如何做出决定,但是如果它不只是想要引用它们和彼此之间的关系以及标签,而是它想要查看存储库本身,而你确实需要它我建议下载存储库并在那里执行所有分析,而不仅仅是复制它的一些逻辑。从某个提供商那里租用一些磁盘空间比尝试将每个提供者的API适合某个git命令的理想化版本更有效地利用时间,然后你仍然需要找出两者的边缘情况。您正在使用的命令及其API。