Подтвердить что ты не робот

Как происходит перехват сервера Gerrit. Поиск технических деталей

Я понимаю, что Gerrit получает git совершает (возможно, с помощью update hook)) и записывает их на фальшивом рефволе где-нибудь, пока не будет проведена экспертная оценка, но как именно этот процесс работает с точки зрения технической реализации? И какие команды git задействованы?

4b9b3361

Ответ 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, будет преобразовано в запись изменений на сервере.
Удаленный ref refs/for/experimental на самом деле не создан Gerrit, хотя сообщения о статусе клиентов могут сказать иначе.


Технически это управляется cmd-receive-pack.

Вызывается 'git push' и обновляет репозиторий проектов с помощью информация, подаваемая с конца "git push".

Он реализуется gerrit/sshd/commands/Receive.java, который получает загрузку изменений через SSH с помощью Git протокол приема-пакета.