Простой git пост-фиксационный крючок для копирования зафиксированных файлов в определенную папку
Я хотел бы автоматически скопировать зафиксированные файлы в определенную папку, чтобы их можно было просматривать в браузере, но я хотел бы сделать это, не создавая голый репозиторий, который отражает основной репозиторий (как показано здесь), и я хотел бы, чтобы это произошло при фиксации.
Есть ли простой способ создать крючок, который считывает, какие файлы были зафиксированы, и копирует их/обновляет их на реальном веб-сервере?
Например: у меня есть папка с именем /example.com и репозиторий git. Я хочу, чтобы, когда я фиксирую index.html в репозитории, соответствующий файл index.html с /example.com должен быть обновлен с содержимым файла, который был зафиксирован
Ответы
Ответ 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
).