Как настроить перехват 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 РЕПО обновляется автоматически.

Смотрите также

чтобы понять, почему необходимо сбросить некоторые переменные окружения.

Я использую следующее 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
Другие вопросы по тегам