Подтвердить что ты не робот

Простой git пост-фиксационный крючок для копирования зафиксированных файлов в определенную папку

Я хотел бы автоматически скопировать зафиксированные файлы в определенную папку, чтобы их можно было просматривать в браузере, но я хотел бы сделать это, не создавая голый репозиторий, который отражает основной репозиторий (как показано здесь), и я хотел бы, чтобы это произошло при фиксации.

Есть ли простой способ создать крючок, который считывает, какие файлы были зафиксированы, и копирует их/обновляет их на реальном веб-сервере?

Например: у меня есть папка с именем /example.com и репозиторий git. Я хочу, чтобы, когда я фиксирую index.html в репозитории, соответствующий файл index.html с /example.com должен быть обновлен с содержимым файла, который был зафиксирован

4b9b3361

Ответ 1

Хорошим способом сделать это является создание post-commit, который запускает git checkout -f, с деревом работы, установленным в каталог, который отображается вашим веб-сервером, и каталог git, установленный в каталог .git в ваш репозиторий разработки. Например, вы можете создать файл .git/hooks/post-commit, который сделал:

#!/bin/sh
unset GIT_INDEX_FILE
export GIT_WORK_TREE=/example.com/
export GIT_DIR=/home/whoever/development/web-project/.git/
git checkout -f

Будьте осторожны с этим, однако -f означает, что git может удалить или перезаписать файлы, чтобы /example.com/ совпадал с деревом в вашей последней фиксации.

(Не забудьте сделать исполняемый файл .git/hooks/post-commit).