LINUX.ORG.RU

Опознать в хуке, откуда зашёл git

 


0

1

Есть сервер А, на нём находится gitolite и bare-репозитории. Есть удалённые сервера B и C, которые пушат в А, в один и тот же репозиторий с помощью одного и того же ключа. Когда, например, B пушит в А, у последнего срабатывает хук post-receive, где дёргаются оба B и C, то есть уже А заходит поочерёдно на B и на С и вызывает на них git pull, чтобы везде всё было одинаково и как только так сразу. В принципе, оно и так работает, но получается, что pull всегда делается и для того репозитория, который инициировал пуш в А. В этом нет беды, но в выхлопе пуша (пока выполняется хук) выводится ненужный, запутывающий и смущающий блок о том, что pull с 「remote B」выполнен успешно, хотя это для А он remote, а для нас он волпне себе локальный, с него ведь пуш и пинали, а раз так — зачем вообще его делать. Отсюда вопрос: можно ли как-то опознать, с какой машины прилетел коммит, желательно опознать её по IP, чтобы сравнить внутри хука с тем, что в .git/config, и затем соответственно выполнять соответствующий блок, который прорелеит коммит только на ту машину, где его ещё нет. И при этом желательно не давать права на чтение auth.log, да.

Deleted

Последнее исправление: fargred (всего исправлений: 2)

$ ssh 127.0.0.1 "env | grep SSH"
SSH_CLIENT=127.0.0.1 56253 22
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SSH_CONNECTION=127.0.0.1 56253 127.0.0.1 22

?

Deleted
()
Ответ на: комментарий от AnDoR

B и С — это по сути клоны, и ключи там в том числе субъект клонирования, поэтому делать их разными, значит усложнять и запутывать процесс синхронизации. Хотя в общем-то, я думал о ключах, но по IP сравнить мне казалось проще, разве не так?

Deleted
()
Ответ на: комментарий от Deleted

Не вижу смысла синхронизировать ключи, учитывая, насколько просто их сгенерить. Может там ещё и хостовые ssh-ключи одинаковые?

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

А в гитолит их подсовывать дядя ваня будет?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.