TortoiseGit с хуками на стороне сервера (через http)

Прежде всего, спасибо за этот замечательный сайт (да, я новичок, по крайней мере, как писатель :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 содержит не мой скрипт, а только образцы, почему? (было бы простым решением создать скрипт, который будет клонироваться каждый раз локально при клонировании репо.

ИЗМЕНИТЬ: форматирование


person StellarNear    schedule 28.03.2017    source источник
comment
Хуки не копируются с сервера на локальный при клонировании. Обычно сервер представляет собой голый репозиторий git (без отдельной папки .git), а имя папки должно быть hooks, а не hook. См. Git Hooks.   -  person crashmstr    schedule 28.03.2017
comment
Извините, я действительно говорил о /hooks :) пропустил s... Печально, если хуки были скопированы при клонировании, что решило бы мою проблему...   -  person StellarNear    schedule 28.03.2017