是否可以远程访问和解析 git 修订历史?
Is it possible to remote access and parse git revision history?
我有一个用例,我需要能够检查 Git 存储库作为 Web 服务的一部分,平均存储库大小将非常大 - 1GB 以上,因为用于视频游戏项目。我需要做一些简单的操作,比如列出修订历史等
现在我正在通过 API 调用远程 Git 主机服务(Github、Bitbucket 等)来实现它。这工作正常,但是有一些很棒的 Git 项目,例如 GitVersion,它们只适用于真正的 Git 存储库,使用 libGit2sharp,我不能轻易地写一个作品围绕。
我觉得这不太可能,但我想知道是否有人讨论过或开始着手实施 libGit2sharp,该 libGit2sharp 可通过他们的主要 Git 主机运行API 的。显然,并非 libGit2 中所有可用的操作都适用于 API 接口,但至少大多数只读操作应该适用。
如果这是一个全新的功能请求 - 我想听听了解 libGit2sharp 代码库的人的意见,了解这样一个功能请求的实现难度。
Git 仅指定用于获取、推送和创建存档的网络协议。通过 Git 协议无法完成任何其他操作(并且提供商可能会禁用存档,以便他们可以利用现有的缓存解决方案)。
If this is an entirely new feature request - I'd like to get the opinion of someone with knowledge of the libGit2sharp codebase about how difficult such a feature request would be to implement.
此功能超出范围且不可能实现,因为 Git 不提供执行这些任务的方法。
一旦您尝试不做Git,那么您就脱离了Git的世界,进入了每个供应商的API .尝试在每个提供者的 API 之上复制 Git 操作和 git 命令本身就是一个完整的项目,并且很可能会让您触及这些提供者的 API限制,因为对存储库的深入分析通常不是他们提供这些服务的原因。
更不用说通过 HTTP 查找每个必要的对象会极其慢,而且从网络上获取一两个千兆字节可能不会有任何收获。
但是,如果您只需要一些可以从 API 本身轻松回答的问题(例如,最新提交及其与不同分支的关系),并且您确实需要 Git版本,那么你最好让它的历史分析成为可插入的,这样你就可以从你的 API 查找中输入数据。
我不熟悉 GitVersion 如何做出决定,但如果它不只是想要引用以及它们之间的关系和标签,而是想要查看存储库自己,并且您确实需要它而不是仅仅复制它的一些逻辑,我建议下载存储库并在那里执行所有分析。从一些供应商处租用一些磁盘 space 比尝试将每个供应商的 API 放入某个理想化版本的 git 命令更有效地利用时间,其中然后,您仍然需要弄清楚命令及其正在使用的 API 的边缘情况。
我有一个用例,我需要能够检查 Git 存储库作为 Web 服务的一部分,平均存储库大小将非常大 - 1GB 以上,因为用于视频游戏项目。我需要做一些简单的操作,比如列出修订历史等
现在我正在通过 API 调用远程 Git 主机服务(Github、Bitbucket 等)来实现它。这工作正常,但是有一些很棒的 Git 项目,例如 GitVersion,它们只适用于真正的 Git 存储库,使用 libGit2sharp,我不能轻易地写一个作品围绕。
我觉得这不太可能,但我想知道是否有人讨论过或开始着手实施 libGit2sharp,该 libGit2sharp 可通过他们的主要 Git 主机运行API 的。显然,并非 libGit2 中所有可用的操作都适用于 API 接口,但至少大多数只读操作应该适用。
如果这是一个全新的功能请求 - 我想听听了解 libGit2sharp 代码库的人的意见,了解这样一个功能请求的实现难度。
Git 仅指定用于获取、推送和创建存档的网络协议。通过 Git 协议无法完成任何其他操作(并且提供商可能会禁用存档,以便他们可以利用现有的缓存解决方案)。
If this is an entirely new feature request - I'd like to get the opinion of someone with knowledge of the libGit2sharp codebase about how difficult such a feature request would be to implement.
此功能超出范围且不可能实现,因为 Git 不提供执行这些任务的方法。
一旦您尝试不做Git,那么您就脱离了Git的世界,进入了每个供应商的API .尝试在每个提供者的 API 之上复制 Git 操作和 git 命令本身就是一个完整的项目,并且很可能会让您触及这些提供者的 API限制,因为对存储库的深入分析通常不是他们提供这些服务的原因。
更不用说通过 HTTP 查找每个必要的对象会极其慢,而且从网络上获取一两个千兆字节可能不会有任何收获。
但是,如果您只需要一些可以从 API 本身轻松回答的问题(例如,最新提交及其与不同分支的关系),并且您确实需要 Git版本,那么你最好让它的历史分析成为可插入的,这样你就可以从你的 API 查找中输入数据。
我不熟悉 GitVersion 如何做出决定,但如果它不只是想要引用以及它们之间的关系和标签,而是想要查看存储库自己,并且您确实需要它而不是仅仅复制它的一些逻辑,我建议下载存储库并在那里执行所有分析。从一些供应商处租用一些磁盘 space 比尝试将每个供应商的 API 放入某个理想化版本的 git 命令更有效地利用时间,其中然后,您仍然需要弄清楚命令及其正在使用的 API 的边缘情况。