У меня есть три репозитория git:
- голый репозиторий на моем сервере git
- локальный репозиторий (A) на моем ноутбуке (я разрабатываю веб-страницы на этом компьютере).
- локальный репозиторий (B) на хостинг-сервере (я использую его как http-сервер).
Я установил post-receive, крючок на стороне сервера, в голом репозитории, чтобы репозиторий (B) вытягивался из голого, и чтобы сервер git отправлял уведомление по электронной почте, когда я фиксирую и нажимаю из репозитория (A) в голый репозиторий. Файл после получения, который я сделал в голом репозитории, выглядит следующим образом:
#!/bin/sh
ssh -l MYUSER -i PRIVKEY www.HOSTINGSERVER.com "cd GITDIRECTORY;git pull"
. $(dirname $0)/post-receive-email
И я также установил переменные окружения в голом репозитории:
git config hooks.mailinglist "MyMailAddress"
git config hooks.announcelist "MyMailAddress"
git config hooks.emailprefix "FooBar"
echo FooBar > description
Я ожидал, что репозиторий (B) будет извлечен, и сервер git отправит электронное письмо с уведомлением по электронной почте после получения, когда я зафиксирую и отправлю в голый репозиторий, но пост-получение не сработало, как я надеялся. У него был репозиторий (B), но сервер git не отправлял электронную почту. Я не видел ошибок электронной почты в журналах на сервере git.
Когда я закомментировал ssh-часть пост-получения, я получил электронное письмо. Когда я закомментировал часть после получения электронной почты, репозиторий (B) вытащил правильно. Когда и часть ssh, и часть после получения электронной почты активны, пост-получение имеет только извлечение из репозитория (B) и не отправляет никаких электронных писем.
Я не знаю, почему пост-получение не работает, как я ожидаю, когда и часть ssh, и часть пост-получения электронной почты существуют одновременно.
Любой намек и комментарий приветствуются. Заранее спасибо.