#git #server #gerrit
#git #сервер #gerrit
Вопрос:
Я понимаю, что Gerrit получает коммиты git ( update
возможно, используя хук) и записывает их где-то в поддельной ссылке, пока не будет выполнена экспертная оценка, но как именно этот процесс работает с точки зрения технической реализации? И какие команды Git задействованы?
Комментарии:
1. Документация по проектированию системы Gerrit может представлять для вас интерес — gerrit-review.googlesource.com/Documentation/dev-design.html — источник также доступен здесь gerrit.googlesource.com/gerrit
Ответ №1:
Вы можете ссылаться на волшебную ссылку refs/for/<branch ref>
, которая используется пользователем при отправке новых коммитов.
Чтобы создать новые изменения для проверки, просто нажмите на волшебную
refs/for/'branch'
ссылку проекта, используя любой инструмент клиента Git:
git push ssh://sshusername@hostname:29418/projectname HEAD:refs/for/branch
Например,
john.doe
можно использовать git push для загрузки новых изменений дляexperimental
ветки проектаkernel/common
, размещенной на сервереgit.example.com
Gerrit:
git push ssh://john.doe@git.example.com:29418/kernel/common HEAD:refs/for/experimental
Каждый новый коммит, загруженный клиентом git push, будет преобразован в запись изменения на сервере.
Удаленный refrefs/for/experimental
фактически не создается Gerrit, хотя сообщения о состоянии клиента могут указывать на обратное.
Технически это управляется cmd-receive-pack .
Вызывается ‘git push’ и обновляет репозиторий проекта информацией, поступающей с конца ‘git push’.
Он реализован gerrit/sshd/commands/Receive.java
, который получает загрузку изменений по SSH с использованием протокола Git receive-pack.