Ruby on rails 砂砾是否必须与存储库位于同一服务器上?

Ruby on rails 砂砾是否必须与存储库位于同一服务器上?,ruby-on-rails,git,Ruby On Rails,Git,只是看看 奇怪的是,如果grit在一台web服务器上,而git存储库在另一台服务器上,那么这仍然有效还是必须在同一台服务器上?或者它以某种方式使用远程处理?似乎您希望在服务器B上有git repos,并在服务器A上有一个类似codaset或github的接口。codaset的开发人员做了我认为您需要的事情,请阅读他的博客帖子:所有实现(以及部分实现、部分包装、部分接口)Git应该能够相互对话,无论是C Git、JGit(Java)、Grit(Ruby)、Git Sharp/Git#(C#)还是D

只是看看


奇怪的是,如果grit在一台web服务器上,而git存储库在另一台服务器上,那么这仍然有效还是必须在同一台服务器上?或者它以某种方式使用远程处理?

似乎您希望在服务器B上有git repos,并在服务器A上有一个类似codaset或github的接口。codaset的开发人员做了我认为您需要的事情,请阅读他的博客帖子:

所有实现(以及部分实现、部分包装、部分接口)Git应该能够相互对话,无论是C Git、JGit(Java)、Grit(Ruby)、Git Sharp/Git#(C#)还是Dulwich(Python),都不依赖于服务器上使用的实现和客户端使用的实现。对于在同一存储库上工作的不同实现,情况也是如此(可能程度较低)


如果它不是真的,那就是Git实现中的一个bug(C中的原始版本是参考实现)。

它必须在同一台服务器上。如果查看,您将看到
Repo
构造函数接受本地文件路径:

repo = Repo.new("/Users/tom/dev/grit")
在GitHub(Grait的开发和提取地),我们在运行web应用程序的前端和git存储库的后端都使用Grait。我们对Grit进行修补,以便通过BERT-RPC对Grit::Git函数(其中包含所有实际文件访问)进行每次调用,并将其发送到适当的后端,而不是在本地执行代码。在这种情况下,传递给Grit初始值设定项的文件路径就是后端服务器上的路径。因此,原始存储库访问由在后端服务器上运行Grit的ruby处理程序完成,而Grit名称空间的其余部分(Grit::Commit、Grit::Diff等)则在前端运行。实际上很酷。在GitHub,我们通过这个系统每月运行300 mil RPC调用

如果您想了解有关BERT-RPC的更多信息,请查看RubyConf上的Toms talk: