如何从静态服务器提供裸 git 回购协议?

How to serve bare git repos from a static server?

我正在使用 NodeJS-Git-Server,它基本上允许客户端连接到我的服务器并克隆磁盘上的裸 git 存储库。 NodeJSGitServer 创建与客户端的 git 进程的连接,以确定他们的机器丢失了哪些数据包,然后服务器将它们流式传输到客户端。这是标准的git protocol

NodeJSGitServer 生成 运行 git-upload-pack and git-receive-pack 的子进程,然后将包通过管道传递给客户端的响应。

但是,这些 git 命令以本地 git 存储库的路径为参数。所以看起来我需要在同一台服务器上托管我所有的裸 git 存储库 运行 使用这些 git 命令来与客户端通信。有什么方法可以将这些裸 git 存储库托管在与我的节点服务器不同的服务器上,例如 S3 存储桶。我计划使用 Heroku,它们的存储是短暂且有限的。

  • nodejs 服务器似乎只处理本地路径上可访问的存储库,

  • AFAIK,git-upload-packgit-receive-pack 旨在 运行 在托管存储库的系统上


您可以尝试在本地安装远程存储库 -- 例如使用 nfs 或 sshfs。不过要测试性能。