Страницы

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

четверг, 30 мая 2019 г.

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

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


Ответ

на сервере:
в каталоге /путь/к/ выполните команду:
$ 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

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

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