Должен ли грит быть на том же сервере, что и репозитории? - PullRequest
1 голос
/ 02 декабря 2009

Просто смотрю на http://github.com/mojombo/grit

Любопытно, если grit находится на веб-сервере, а git-репозитории находятся на другом, это все еще будет работать или ДОЛЖНО быть на том же сервере? Или это как-то использует удаленное взаимодействие?

Ответы [ 4 ]

3 голосов
/ 03 декабря 2009

В GitHub (где grit был разработан и извлечен из него) мы используем Grit как на веб-интерфейсе, где выполняется веб-приложение, так и на бэкэндах, где находятся git-репозитории. Мы исправляем Grit для каждого вызова функций Grit :: Git (где содержится весь фактический доступ к файлу) через BERT-RPC к соответствующему бэкэнду вместо локального выполнения кода. Путь к файлу, передаваемый инициализатору Grit, - это путь на внутреннем сервере в этом случае. Таким образом, необработанный доступ к хранилищу осуществляется обработчиками ruby, выполняющими Grit на внутренних серверах, а остальная часть пространства имен Grit (Grit :: Commit, Grit :: Diff и т. Д.) Запускается во внешних интерфейсах. Это на самом деле довольно круто. В GitHub через эту систему мы выполняем около 300 миллионов RPC-вызовов в месяц.

Если вы хотите узнать больше о BERT-RPC, ознакомьтесь с Toms talk на RubyConf: http://rubyconf2009.confreaks.com/19-nov-2009-10-25-bert-and-ernie-scaling-your-ruby-site-with-erlang-tom-preston-werner.html

1 голос
/ 03 декабря 2009

Должно быть на том же сервере. Если вы посмотрите документацию , то увидите, что конструктор Repo принимает локальный путь к файлу:

repo = Repo.new("/Users/tom/dev/grit")
0 голосов
/ 02 декабря 2009

Все реализации (и реализации частей, обертки частей, интерфейсы частей) для Git должны иметь возможность общаться друг с другом, будь то C git, JGit (на Java), Grit (на Ruby), Git-Sharp / Git # (в C #) или Dulwich (в Python), независимо от того, какая реализация используется на сервере и какая реализация используется на клиенте. То же самое верно (возможно, в меньшей степени) с различными реализациями, работающими в одном и том же хранилище.

Если это не так, это ошибка в реализации Git (исходная версия в C является эталонной реализацией).

0 голосов
/ 02 декабря 2009

Похоже, вы хотите иметь git-репозитории на сервере B и иметь интерфейс для него, например, codaset или github на сервере A. Разработчик Codaset делает то, что вы ищете, прочитайте его сообщение в блоге: http://codaset.com/codaset/codaset/blog/quiet-at-the-front-but-busy-at-the-back

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...