砂砾必须与储存库位于同一台服务器上吗?

时间:2009-12-02 19:40:24

标签: ruby-on-rails git

只看http://github.com/mojombo/grit

好奇,如果grit在Web服务器上,并且git存储库在另一个上,那么这仍然可以工作,或者它是否必须在同一台服务器上?或者它是否以某种方式使用远程处理?

4 个答案:

答案 0 :(得分:3)

在GitHub(开发grit并从中提取)中,我们在运行Web应用程序的前端和git存储库所在的后端使用Grit。我们修补Grit,通过BERT-RPC将Grit :: Git函数(包含所有实际文件访问权限)的每次调用都调用到适当的后端,而不是在本地执行代码。在这种情况下,传递给Grit初始化程序的文件路径是后端服务器上的路径 。所以原始存储库访问是由后端服务器上运行Grit的ruby处理程序完成的,而Grit命名空间的其余部分(Grit :: Commit,Grit :: Diff等)是在前端运行的。它真的很酷。在GitHub,我们通过这个系统每个月运行300mil RPC调用。

如果您想了解有关BERT-RPC的更多信息,请查看RubyConf的Toms talk:http://rubyconf2009.confreaks.com/19-nov-2009-10-25-bert-and-ernie-scaling-your-ruby-site-with-erlang-tom-preston-werner.html

答案 1 :(得分:1)

它必须位于同一台服务器上。如果您查看the documentation,那么您会看到Repo构造函数接受本地文件路径:

repo = Repo.new("/Users/tom/dev/grit")

答案 2 :(得分:0)

Git的所有实现(以及部分实现,部分包装器,部分接口)应该能够相互通信,无论是C git,JGit(在Java中),Grit(在Ruby中),Git-Sharp / Git# (在C#中)或Dulwich(在Python中),与在服务器上使用的实现以及在客户端上使用的实现无关。使用同一存储库的不同实现也是如此(可能在较小程度上)。

如果不是这样,那就是Git实现中的一个错误(C中的原始版本是参考实现)。

答案 3 :(得分:-1)

好像你想在服务器B上安装git repos,并在服务器A上有像codaset或github这样的接口.Codaset的开发人员做了我认为你正在寻找的东西,阅读他的博客文章:{{3 }}