Я понимаю, что Gerrit получает git совершает (возможно, с помощью update
hook)) и записывает их на фальшивом рефволе где-нибудь, пока не будет проведена экспертная оценка, но как именно этот процесс работает с точки зрения технической реализации? И какие команды git задействованы?
Как происходит перехват сервера Gerrit. Поиск технических деталей
Ответ 1
Вы можете ссылаться на магическую ссылку refs/for/<branch ref>
, которая используется пользователем при нажатии новых коммитов.
Чтобы создать новые изменения для обзора, просто нажмите на магические , используя любой Git клиентский инструмент:
git push ssh://[email protected]:29418/projectname HEAD:refs/for/branch
например.
john.doe
может использовать Git push для загрузки новых изменений для веткиexperimental
проектаkernel/common
, размещенной на сервереgit.example.com
Gerrit:
git push ssh://[email protected]: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 протокол приема-пакета.