Git дополнительный крюк, предварительная загрузка - PullRequest
0 голосов
/ 30 декабря 2018

Я студент университета.В настоящее время я выполняю свой последний годовой проект, требующий перехвата, который выполняется автоматически на стороне сервера хранилища, до того, как объекты будут перемещены на сторону клиента, и после того, как объекты будут перемещены на сторону сервера, что означает "пост-получение "крючок.

Я провел много исследований относительно крючка, и я узнал grack и rjgit_grack.Ссылки будут прикреплены ниже.

Grack: https://github.com/grackorg/grack Rjgit_grack: https://github.com/grackorg/rjgit_grack

Grack и rjgit_grack - драгоценный камень из https://rubygems.org/. Проект Grack призван заменить встроенный git-http-backendОбработчик CGI, распространяемый с C Git с приложением Rack, и rjgit_grack - это альтернативный адаптер grack, поддерживающий дополнительные ловушки для git, которые имеют ловушку, необходимую мне для моего проекта, ловушку preUpload, которая выполняется непосредственно перед выполнением операции загрузкиперед отправкой данных клиенту.Но я не смог заставить его работать для моего проекта по разным причинам.

Почему у Git нет ловушки, которая выполнялась непосредственно перед отправкой данных клиенту?Какой-нибудь совет по получению этого крючка или любой другой подобной функции?

1 Ответ

0 голосов
/ 31 декабря 2018

Идея, лежащая в основе перехватчиков Git, заключается в том, что они выполняют по крайней мере одну из двух вещей: изменяют состояние репозитория или текущей операции или, необязательно, блокируют возникновение поведения.

Перехват, который выполняется перед объектамитолкнуть не сможет сделать ни один из этих: у него нет данных о том, как изменить хранилище, так как у него нет никаких объектов, и без каких-либо данных о том, что происходит, он не может с пользойопределите, нужно ли блокировать push.

Для вашего проекта может быть полезно обернуть серверный сценарий git HTTP оболочкой, которая выполняется до запуска службы push, или той, которая ищет разделитель pkt-строки flush(0000), перехватывая данные.Вы также можете исправить Git, чтобы иметь нужный вам крючок для вашего проекта в соответствующем месте.

...