Как настроить перехват Git так, чтобы после нажатия на ssh://peter@foo.com/~/bar.com.git он перешел на ~ / bar.com и сделал git pull?
Мне посоветовали настроить на удаленном сервере
foo.com/~/bar.com # live webpage content
foo.com/~/bar.com.git # a bare repo
так, с моей локальной машины, я могу сделать
git push
и это подтолкнет к foo.com/~/bar.com.git
на удаленной машине (полный путь ssh://peter@www.foo.com/~/bar.com.git
Как можно добавить хук, чтобы после нажатия удаленный сервер cd ~/bar.com
и сделать git pull
чтобы весь контент обновлялся (так же, как на локальной машине)? (не нужно бежать git update
как для Mercurial?)
(это связано с тем, что невозможно скопировать папку на сервере, а затем отредактировать и нажать git?) foo.com
а также cd ~/bar.com
и ждать там и сделать git pull
всякий раз, когда после git push
с локальной машины, но было бы неплохо сделать это автоматически)
Обновление: пожалуйста, оставляйте ответ, только если вы знаете конкретные детали и как это сделать. Если вы Google и опубликовать первый или второй результат Google здесь, это не поможет.
Обновление 2: я пошел в ~/bar.com.git/hooks
и добавьте новый файл post-receive
с содержанием:
#!/bin/bash
cd ~/bar.com
git pull ../bar.com.git master
а также chmod 755 post-receive
и если я отредактирую файл на локальной машине, а затем git com -m "ok"
а также git push
изменения не вносятся в папку на удаленной машине ~/bar.com
2 ответа
Вы можете добавить post-receive
подключить к ~/bar.com.git
репо за это. Для этого добавьте в ~/bar.com.git/hooks/
каталог исполняемого файла post-receive
с содержанием:
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd ~/bar.com
git pull
Убедитесь, что post-receive
Файл имеет исполняемые биты (например, 755).
Теперь всякий раз, когда что-то подталкивается к ~/bar.com.git
репо ~/bar.com
РЕПО обновляется автоматически.
Смотрите также
- получить "fatal: not git repository: '.'" при использовании перехвата пост-обновления для выполнения 'git pull' в другом репо
- Git - ловушка после получения с помощью git pull "Не удалось найти правильный каталог git"
чтобы понять, почему необходимо сбросить некоторые переменные окружения.
Я использую следующее post-update
скрипт (убедитесь, что вы установили исполняемый бит на него):
#!/bin/sh
rm -rf ~/public_html/xxx
git-archive --format=tar --prefix=xxx master | tar x -C ~/public_html
Это делает вещь, но есть короткое окно, когда сайт недоступен. дела git pull
прямо в твоем ~/bar.com
разоблачит мерзавца .git
каталог, поэтому убедитесь, что вы либо заблокировали его на своем http-сервере, либо .git
где-то выше в иерархии каталогов, т.е. что-то вроде:
~
\
- repo
\
- .git
- bar.com
\
- your content