背景
我目前正在使用 LShift 的mercurial 服务器托管一些 mercurial 存储库。看起来存储库的数量和大小预计会大幅增长。
为了解决这个问题,我计划将存储库托管在与托管 mercurial-server 应用程序的机器分开的文件服务器集群上。
问题
我最关心的是 mercurial-server 应用程序如何处理来自客户端的请求?以“hg clone ssh://hg@server/repo”这样的请求为例。我知道它会验证密钥并确保用户有权克隆该存储库,但它会处理请求的隧道还是将其分流到文件服务器?
基本上,mercurial-server 机器是否需要传输 GB 数据的容量或仅需要足够的容量来解析请求?
编辑
嗨,Paul,我意识到我的请求不是很清楚,所以我想再试一次。我真的很想知道当存储库在物理上分开时,mercurial-server 将如何工作。mercurial-server 是否需要处理流经它的实际存储库的带宽?
初始请求:
潜在实施方案1
文件通过 mercurial-server 传递:
潜在实施方案2
文件直接发送给请求者(不使用 mercurial-server 带宽):
答案1
好的,所以将 mercurial 服务器主机连接到文件服务器主机的协议是 Mercurial 本身。在这种情况下,该主机将需要大量带宽和大量存储空间。
您的问题实际上与 mercurial-server 无关 - 这与您在没有 mercurial 的情况下通过 ssh 使用 Mercurial 时的情况完全相同。恐怕我要在这里停下来了 - 我现在没有太多时间 - 我希望您能够找到解决问题的方法!
答案2
mercurial-server 主机如何与文件服务器通信?通过 NFS 还是其他远程文件系统协议?
mercurial-server 希望存储库目录看起来像一个文件系统,并且(通过 Mercurial)使用普通的文件系统操作来读取和写入它们,但它并不关心它是否是一个真正的本地磁盘或例如 NFS 挂载。