Git Remote для тестирования

Я привык использовать Github в качестве резервного или центрального хранилища, а также проводить разработку и тестирование локально.

Теперь у меня есть удаленный тестовый компьютер, и я хочу иметь возможность отправлять локальные коммиты на удаленный, так что рабочий каталог удаленных компьютеров обновляется, что позволяет мне выполнять тестирование содержимого.

1) Большинство инструкций, которые я нашел для настройки удаленных устройств, заключается в использовании --bare init. Насколько я понимаю, это означает, что удаленному не хватает рабочего каталога, и он может принимать нажатия. Настройка пульта без --bare выдает ошибку, когда я пытаюсь нажать. Как я могу выполнить вышеуказанный рабочий процесс?

2) Является ли этот рабочий процесс даже хорошей идеей? Должен ли я иметь тестовое репо на удаленной машине в дополнение к голому репо. Я делаю толчок от разработки к голому репо, а затем, когда я готов к тестированию, я вытягиваю из голого репо в тестовое репо.

В случае, если это имеет значение, я спрашиваю относительно проекта Rails, но я не пометил этот вопрос как таковой, потому что я не понимаю, почему это так.

3 ответа

Решение

Я бы предложил использовать пустой репозиторий для push-уведомлений и второй репозиторий, который будет извлекать из него места, где будут выполняться тесты. Это будет легче понять, и вам не нужно быть осторожным, когда вы решите поцарапать тестовую среду и воссоздать ее. Если они находятся на одном сервере, в тестовом репо может быть установлен "альтернативный" для центрального сервера, поэтому объекты не будут храниться дважды (создаются с использованием git clone --shared).

Даже с этой настройкой вы можете легко запускать тесты автоматически. Просто установите хук post-receive или post-update в центральном репозитории, который запустит тест. Есть даже готовая реализация в contrib/continuous в источниках git, которые вы можете настроить под свои нужды.

Дело не в том, что вы не можете настроить push-репозиторий с рабочим каталогом. Git не позволит вам нажать на извлеченную ветку (потому что он не знает, как обновить его во время push и не будет знать, как это сделать позже), но это можно обойти, используя "detached HEAD". Однако это может привести к путанице, и вы рискуете случайно удалить важные данные, когда решите восстановить свою тестовую среду.

В большинстве случаев вы не хотите загружать репозиторий не в чистом виде. Причина в том, что нажатие обновляет только историю, но не рабочий каталог; это объясняется в git FAQ.

Так что да, ваше второе предложение будет путь. Вы даже можете использовать ловушку пост-обновления для автоматического обновления вашего тестового репозитория

То, как мы делаем это в наших проектах, - это создание отдельной ветки для каждого тестового сервера (staging, test, qa). Когда вы хотите внедрить некоторые изменения на одном из серверов, вы просто объединяете их в определенную ветвь для этого сервера, а затем используете Capistrano для развертывания.

Другие вопросы по тегам