Прежде всего, спасибо за этот замечательный сайт (да, я новичок, по крайней мере, как писатель :p).
Поскольку я не нашел здесь ответа на свою проблему, я попытаюсь обратиться за помощью напрямую :) Я видел здесь, что, возможно, это будет связано с HTTP, но я не знаю, что этот пост уже устарел...
Основная проблема:
Я хочу сделать какой-нибудь хук для запуска на удаленном сервере (в системе Linux).
Когда я пытаюсь действовать как клиент, делающий с TortoiseGit клон, а затем пытаюсь зафиксировать и отправить некоторые изменения, все завершается без запуска какого-либо удаленного сценария, присутствующего в папке .git/hooks
в репозитории удаленного сервера. Я пробовал со сценарием с именем update
и с pre-receive
. У этих скриптов есть эхо «привет», и он нигде не печатается при запуске.
Что я уже проверил:
Расширение ".sample" исчезло, скрипты можно выполнять, они принадлежат хорошей учетной записи пользователя, мне удалось заставить работать хуки на стороне клиента (например, prepare-commit-msg
).
Более подробный пример:
Чтобы пойти дальше, я попытался зафиксировать и протолкнуть не через TortoiseGit в Windows (как клиент), а непосредственно своего рода локальное тестирование на сервере Linux (чтобы ближе изучить проблему, прежде чем пытаться снова с TortoiseGit...).
git clone http://{ID}@{serv}.corp/git/{FOLDER}/{REPO}.git .
Cloning into '.'...
(клон в порядке), затем переключитесь на тестовую ветку
git checkout test_hook
Branch test_hook set up to track remote branch test_hook from origin.
Switched to a new branch 'test_hook'
(ветка, которую я создал для тестирования хуков)
Совершить некоторые случайные модификации
git commit -a -m "test command line"
[test_hook a464a3e] test command line
1 file changed, 1 insertion(+), 1 deletion(-)
mode change 100644 => 100755 Makefile
И, наконец, толкнуть
git push --progress "origin" test_hook:test_hook
Fetching remote heads...
refs/
refs/tags/
refs/heads/
updating 'refs/heads/test_hook'
from 6d65df53f962a12e8445a137de173f50eeade819
to a464a3ef2cfca3648a4b7b4e94f377f13b82f852
sending 3 objects
done
Updating remote server info
To http://{ID}@{serv}.corp/git/{FOLDER}/{REPO}.git
6d65df5..a464a3e test_hook -> test_hook
Пробовал размещать скрипт и в папке {FOLDER}/{REPO}.git/hooks/
и в основной {FOLDER}/hooks
Даже со сценарием хуков, например:
#!/bin/sh
# Testing Server-sided hooks
echo "Hello"
echo "Cancelling push."
exit 1
Нажатие закончилось нормально и ничего не печатает...
Если у вас есть идеи, чтобы помочь мне, это будет приветствоваться, спасибо :)
P.S. Бонусный вопрос:
Я пытался просто добавить скрипт, который мне удалось запустить prepare-commit-msg
, в папку моего репозитория в {FOLDER}/{REPO}.git/hooks
. Но почему, когда я клонирую этот репозиторий, локальный .git/hooks
содержит не мой скрипт, а только образцы, почему? (было бы простым решением создать скрипт, который будет клонироваться каждый раз локально при клонировании репо.
ИЗМЕНИТЬ: форматирование
hooks
, а неhook
. См. Git Hooks. - person crashmstr   schedule 28.03.2017