【问题标题】:Is it possible to remote access and parse git revision history?是否可以远程访问和解析 git 修订历史?
【发布时间】:2016-12-28 12:18:51
【问题描述】:

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

现在我通过对远程 Git 主机服务(Github、Bitbucket 等)的 API 调用来实现它。这可以正常工作,但是有一些很棒的 Git 项目,例如 GitVersion,它们仅适用于真正的 Git 存储库,使用 libGit2sharp,我无法轻松编写解决方法。

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

如果这是一个全新的功能请求 - 我想征求了解 libGit2sharp 代码库的人的意见,了解此类功能请求的实现难度。

【问题讨论】:

    标签: libgit2 libgit2sharp


    【解决方案1】:

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

    如果这是一个全新的功能请求 - 我想征求了解 libGit2sharp 代码库的人的意见,了解此类功能请求的实现难度。

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

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

    更不用说通过 HTTP 查找每个必要的对象会非常很慢,而且您可能不会从网络中获取一两个千兆字节的任何东西。

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

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

    【讨论】:

    • 是的,这对我来说很有意义。感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多