Как я могу сделать это с Git - PullRequest
1 голос
/ 11 августа 2010

Мы мигрируем из HG в Git.Наша установка выглядит примерно так:

Разрабатывайте локально, фиксируйте и отправляйте код на наш сервер dev и тестируйте, затем мы берем код на dev и помещаем его в prod.Итак: local -> dev server / staging -> production server

Как мы это делаем с HG:

От локального к devserver

hg commit -m 'stuff'
hg push ssh://user@devserver//var/django/projects/project_name
ssh -l username devserver 'hg update -R /var/django/projects/project_name

От devserver до производства Вход в систему на сервере

mkdir /var/django/projects/project_name ; cd var/django/projects/project_name ; hg init
hg pull ssh://username@devserver//var/django/projects/project_name
/etc/init.d/apache reload

Я пытаюсь повторить то же самое с Git, но мне не повезло, чтобы заставить их работать.До сих пор я пытался сделать следующее:

Локальный

git init
git add .
git commit
git remote add origin ssh://user@devserver/var/django/projects/project_name
git push origin master

Сервер разработки

git init

(исходный код находится здесь для тестирования)

Рабочий сервер

git init
git remote add origin ssh://user@devserver/var/django/projects/project_name
git pull origin master

Проблема в том, что я делаю это не из-за того, что рабочий сервер не обновляет последнюю версиюИзменения

Есть идеи, как я могу сделать этот тип рабочего процесса?

С уважением,

Джефф

1 Ответ

0 голосов
/ 11 августа 2010

Похоже, что ваш dev-сервер представляет собой "не пустой" Git-репозиторий (то есть он имеет рабочую копию). Смотрите этот вопрос для связанного сценария: Git push только для пустых репозиториев?

Когда вы входили в dev-сервер, вы могли получить предупреждение о том, что вставка в не-пустой репозиторий небезопасна и, вероятно, не то, что вы хотите. То, что я хотел бы сделать, - это создать новый пустой репозиторий (используя git init --bare) для разработки. Неважно, где находится этот репозиторий (если он доступен со всех ваших серверов). Затем, после отправки кода в репозиторий dev, войдите на сам компьютер dev и вытяните из репозитория голого dev, чтобы обновить локальные файлы до последней версии кода.

Если вы хотите обновить свой рабочий сервер до определенной версии кода, войдите на рабочий сервер и извлеките его из хранилища, чтобы обновить производственные файлы. Вы даже можете проверить конкретную версию (с помощью хэша, тега SHA1 или чего-либо еще), чтобы убедиться, что вы не получите никаких других коммитов, которые кто-либо еще вставил в хранилище за это время. (Это также позволит вам вернуться к любой предыдущей версии в любой момент, если вам нужно.)

Приведенный выше рабочий процесс также легко поддерживает более одного сервера разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...