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

Git не используется

У меня есть серверный сервер с репо, и я могу успешно совершить и нажать с моей локальной машины. Однако крюк после приема не работает. Подробности:

  • Использование SSH в качестве протокола
  • Я переименовал стандартный "post-receive.sample" в "post-receive"
  • У этого файла есть разрешения -rwxr-xr-x
  • Файл принадлежит одному и тому же пользователю, которому принадлежит репо, которое является тем же SSH-пользователем, который входит в систему и нажимает
  • Фактическое нажатие идет нормально; файлы обновляются - это просто хук, который не запускается
  • Я попробовал поставить echo "Some text" до и после крючка, но это не показано (см. Post Commit Hook Not Running).
  • Крючок script включен ниже, хотя это, похоже, не вызывает проблемы.
  • Использование git 1.7.0.4 на Ubuntu 10.04

.

[email protected]:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/
4b9b3361

Ответ 1

Проблема связана с установкой файловой системы. Раздел был установлен как noexec, и поэтому файлы не могли быть выполнены. Это заставило крюк не запускаться. Я удалил флаг noexec, и теперь он работает отлично.

Ответ 2

Чтобы выполнить запуск Git, он должен иметь разрешения, позволяющие выполнять его. Если крючок не работает, проверьте разрешения и убедитесь, что он выполним. Если это не так, вы можете сделать все перехватчики такими, как это:

chmod ug+x .git/hooks/*

... или если вы хотите сделать один крючок (например, post-receive) исполняемый файл:

chmod ug+x .git/hooks/post-receive

(Благодаря этот пост)

Ответ 3

У меня была эта проблема. У меня была опечатка в имени файла script.

после получения, а не post-receive

Ответ 4

Кажется, что GIT НЕ запускает пост-прием, если в базу кода есть нет.

В моем случае

Пост-крючок не выполнялся, но операция "push" продолжала возвращать следующее сообщение.

Все обновленные

Итак, я просто создал пустой файл в своем коде, сделал фиксацию, а затем нажал на удаленный. На котором был выполнен захват post-receive.

Ответ 5

У меня была такая же проблема в системе Centos 6, где оказалось, что SELinux препятствовал запуску сценариев хуков. Здесь помогло преобразование httpd_git_script_t в разрешающий домен (поскольку "sesearch -A -s httpd_git_script_t -p exec" ничего не дало, т.е. Ни одному процессу, запущенному в домене httpd_git_script_t, не было разрешено разрешение exec):

semanage permissive -a httpd_git_script_t

Ответ 6

Вы уверены, что он не работает? Он должен быть запущен, вы просто не можете его увидеть. Моя догадка заключается в том, что в то время, когда он выполнялся, в ssh-сессии не было установлено stdout, поэтому вы никогда не увидите результат своего эха. Ссылка предлагает проверить его локально, а не через ssh.