Что надо:
Общий git-сервер, который при pull сразу бы применял изменения.
Что есть:
VPS хостинг, git, ssh.
В чем проблема:
Был обычный сайт в www/, сделал ему git init, add ., commit. У себя на локалке сделал клон, все склонировалось. Теперь мне надо залить изменения из моего репозитория обратно на продакшен (vps). Pull делать отказывается, ссылаясь что нужен bare репозиторий. Но как он может быть bare, если это продакшен? На сколько я знаю, эти репозитории сами по себе не хранят файлы, а только изменения в .git
Нельзя пушить в чекаутнутую ветку. Поэтому и нужен bare.
И по-хорошему, надо бы экспортить код, а не заставлять веб-сервер работать из репозитория. Делается простым хуком на стороне сервера.
У меня сейчас тоже есть промежуточный (нужен для редмайна, habrahabr.ru/post/147877/ )
Но, обновляю на сервере все равно вручную.
Думал сделать через редмайн (ставить таск на робота — обнови продакшен), но пока не увидел в этом необходимости.
На своем можно сделать так (я делал что-то подобное).
На самом сервере делаешь «мастер» bare репозиторий (var/git/project.git/) + www репозиторий (var/www/project)
Все (разработческие, www, тестирование и тд) репы цепляются к баре репозиторию.
Там ставится хук, который при пуше в него, проверяет в тексте коммита, есть ли какое-то ключевое слово (например update) и, если есть — обновляет www репозиторий.
хук по памяти — post-receive (.git/hooks лежат примеры хуков. Среди них должен быть нужный нам, только .sample надо убрать)
Внутри — что-то типа (без проверки на текст в комментарии):
Еще судя по тому как вы это называете «git сервер», вы немного не понимаете как git работает.
git — децентрализованная scm, в ней каждый репозиторий — это «полноценный git сервер».
Если я правильно понял, то вам надо заливать изменения на сервер и после этого применять их на сервере. Но тогда получается, что нужно 2 репозитория на сервере: тот, куда будет направлен push с локального компьютера и тот, который будет выполнять pull с удалённого (потому что pull с локального сервер сделать не сможет).
Второй реп проще всего сделать в домашней папке, а pull проще всего настроить по cron'у, скажем, каждый день (или полдня).