Как поднять полноценный git сервер?

Что надо:
Общий git-сервер, который при pull сразу бы применял изменения.

Что есть:
VPS хостинг, git, ssh.

В чем проблема:
Был обычный сайт в www/, сделал ему git init, add ., commit. У себя на локалке сделал клон, все склонировалось. Теперь мне надо залить изменения из моего репозитория обратно на продакшен (vps). Pull делать отказывается, ссылаясь что нужен bare репозиторий. Но как он может быть bare, если это продакшен? На сколько я знаю, эти репозитории сами по себе не хранят файлы, а только изменения в .git
  • Вопрос задан
  • 4682 просмотра
Решения вопроса 1
Meliborn
@Meliborn Автор вопроса
Вообщем сделал так: bare репозиторий + capistrano. Получилось очень даже.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
kuzemchik
@kuzemchik
Нельзя пушить в чекаутнутую ветку. Поэтому и нужен bare.
И по-хорошему, надо бы экспортить код, а не заставлять веб-сервер работать из репозитория. Делается простым хуком на стороне сервера.
Ответ написан
Комментировать
Voenniy
@Voenniy
Pull делать отказывается, ссылаясь что нужен bare репозиторий

Покажите, что именно пишет
Ответ написан
Inori
@Inori
Как делали клон?

Если все правильно, то тогда git push origin из локалки должно быть достаточно.
Ответ написан
pomeo
@pomeo
git config --bool core.bare true? в директории там где у вас www на vps
Ответ написан
Oreolek
@Oreolek
Если я правильно понял, то вам надо заливать изменения на сервер и после этого применять их на сервере. Но тогда получается, что нужно 2 репозитория на сервере: тот, куда будет направлен push с локального компьютера и тот, который будет выполнять pull с удалённого (потому что pull с локального сервер сделать не сможет).

Второй реп проще всего сделать в домашней папке, а pull проще всего настроить по cron'у, скажем, каждый день (или полдня).
Ответ написан
Meliborn
@Meliborn Автор вопроса
Сделал git config receive.denyCurrentBranch ignore на удаленном. Теперь пушиться, но сразу помечается как deleted судя по git status
Ответ написан
Комментировать
middle
@middle
Чтобы «на своём поднимать» — можно или просто работать по ssh, либо использовать gitolite, где аутентификация происходит по ssh-ключам.
Ответ написан
Комментировать
CKOPOBAPKuH
@CKOPOBAPKuH
работаю через bare=false, denyCurrentBranch=ignore
помимо этого должен быть ещё и хватает только .git/hooks/post-receive:
#!/bin/sh

cd…
GIT_DIR='.git'
umask 002 && git reset --hard
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы