Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

развёртывание проекта с помощью git push

#git #git_push


имеется:


сервер с git-ом и доступом по протоколу ssh
на сервере в каталоге /путь/к/ создано обыкновенное (не-bare) git-хранилище командой
git init
у пользователя, от имени которого подключаюсь, есть права на запись в этот каталог


требуется:


чтобы при отправке изменений командой git push в любую ветку из локального клона
этого хранилища обновлённые файлы тут же появлялись на сервере в рабочем каталоге /путь/к/
именно в том виде, как они представленны в этой самой ветке


да, я знаю про подводные камни. меры приняты.

как настроить хранилище на сервере, чтобы оно работало именно так, как мне требуется?
    


Ответы

Ответ 1



на сервере: в каталоге /путь/к/ выполните команду: $ git config receive.denyCurrentBranch ignore в хранилище (/путь/к/.git/) создайте файл /путь/к/.git/hooks/post-update следующего содержания: #!/bin/sh GIT_WORK_TREE=$(dirname $PWD) git reset --hard $(git rev-parse $1) добавьте этому файлу биты исполнимости: $ chmod +x /путь/к/.git/hooks/post-update всё. теперь можете клонировать это хранилище себе локально: $ git clone пользователь@сервер:/путь/к/ добавлять файлы, ветки, коммитить и отправлять изменения на сервер командой git push (понятно, что если ветки на сервере ещё не существует, надо будет её указать, например, так: git push origin ветка). если вдруг понадобится переключиться на другой коммит/ветку без создания нового коммита, то придётся «вручную» на сервере выполнить (в каталоге /путь/к/) git checkout -f ... или git reset --hard ... навеяно этими вопросами (и ответами к ним) с одной целью — упростить процесс: Настройка и развертывание проекта c помощью Git Deploy a project using Git push

Комментариев нет:

Отправить комментарий