#git #pre-commit-hook
#git #перехват предварительной фиксации
Вопрос:
Я только что написал небольшой хук предварительной фиксации для выполнения моего пользовательского действия. Мой центральный репозиторий находится на сервере Solaris с включенным HTTP.
/apps/opt/git/myrepo.git
Я отредактировал хук предварительной фиксации и изменил, как показано ниже:
#!/bin/sh -x
if [ $LOGNAME -ne bala ]; then
echo "You are not allowed"
exit 1;
fi
Если я клонирую этот репозиторий и выполняю действие фиксации с использованием другого пользователя, он не выдает никакого сообщения, а фиксирует его.
Почему мой коммит не вызывает pre-commit
перехват?
Также я мог видеть в моем клонированном репозитории в .git/hooks
каталоге, что перехват « pre-commit
» отсутствует, я вижу только шаблоны по умолчанию.
Кто-нибудь может здесь помочь?
Комментарии:
1. Помогли ли вам советы от baluchen в решении проблемы? Если да, не могли бы вы принять решение (используя кнопку с галочкой)?
Ответ №1:
Несколько элементов ответа здесь:
- Перехваты не распространяются через клоны, они являются чисто локальными для репозитория
- если вы клонируете репозиторий, в котором вы определяете перехват, вы не найдете указанный перехват
- если вы хотите предотвратить фиксацию в вашем локальном репозитории, вам нужен
pre-commit
(как вы сделали) в локальном репозитории. Убедитесь, что это исполняемый файл. - если вы хотите заблокировать любую фиксацию, выполняемую кем-либо, кроме ‘bala’, вам нужен
pre-receive
на стороне сервера
Комментарии:
1. VonC, спасибо за ваше обновление. Я не знал, что перехваты никогда не поставляются с clone. Есть ли способ запретить пользователям удалять этот перехват? Я хочу сохранить эти перехваты в центральном расположении. Сообщите, можете ли вы предоставить возможный способ совместного использования скрипта перехвата.
2. @baluchen: вот почему я упомянул перехват на стороне сервера, подобный
pre-receive
: вы не можете запретить пользователю делать все, что он / она хочет, в своем локальном репозитории. Но, по крайней мере, вы можете отклонить коммиты, отправленные в ваше центральное репозиторий, если указанные коммиты не соответствуют определенным критериям.3. Спасибо VonC. Я попробую этот вариант