¿La arena debe estar en el mismo server que los repositorys?

Solo mirando http://github.com/mojombo/grit

Curioso, si el grano está en un server web, y los repositorys git están en otro, ¿esto funcionará o TIENE que estar en el mismo server? ¿O usa la comunicación remota de alguna manera?

En GitHub (donde se desarrolló y se extrae grit) usamos Grit tanto en la interfaz donde se ejecuta la aplicación web como en los back-end donde están los repositorys de git. Parcheamos Grit para hacer que cada llamada a las funciones de Grit :: Git (donde todo el acceso real al file está contenido) sobre BERT-RPC en el back-end apropiado en lugar de ejecutar el código localmente. La ruta de file pasada al inicializador Grit es la ruta en el server back-end en ese caso. Por lo tanto, el acceso al depósito sin formatting se realiza mediante manejadores de ruby ​​que ejecutan Grit en los serveres de background, mientras que el rest del espacio de nombre Grit (Grit :: Commit, Grit :: Diff, etc.) se ejecuta en las interfaces. En realidad es bastante genial. En GitHub ejecutamos algo así como 300mil llamadas RPC al mes a través de este sistema.

Si desea get más información sobre BERT-RPC, consulte la charla de Toms en RubyConf: http://rubyconf2009.confreaks.com/19-nov-2009-10-25-bert-and-ernie-scaling-your-ruby- sitio-con-erlang-tom-prestn-werner.html

Tiene que estar en el mismo server. Si mira la documentation , verá que el constructor de Repo acepta una ruta de file local:

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

Todas las implementaciones (y las implementaciones de parte, envoltorios de parte, interfaces de parte) a Git deberían poder comunicarse entre sí, ya sea C git, JGit (en Java), Grit (en Ruby), Git-Sharp / Git # (en C # ) o Dulwich (en Python), independientemente de qué implementación se use en el server y qué implementación se usa en el cliente. Lo mismo es cierto (quizás en menor medida) con diferentes implementaciones que trabajan en el mismo repository.

Si no es cierto, es un error en la implementación de Git (la versión original en C es la implementación de reference).

Parece que quieres tener repositorys git en el server B y tener una interfaz para él como codaset o github en el server A. El desarrollador de Codaset hace lo que creo que estás buscando, lee su publicación en el blog: http: // codaset. com / codaset / codaset / blog / quiet-at-the-front-but-busy-at-the-back