Способ, которым я это делаю, заключается в том, чтобы иметь «промежуточную» ветку, которая отслеживается в вашем благословенном репо.Вы захотите использовать гем 'capistrano-ext', который предоставляет несколько дополнительных опций конфигурации для этапов (я думаю, что вы уже используете это, учитывая ваш вызов для развертывания в стадии подготовки).capistrano-ext
определяет этапы, которые позволяют вам иметь файл развертывания для каждого этапа, например, «этап», где вы определяете ветвь set :branch, "staging"
, уникальную для каждого этапа, на который вы развертываете.Вы можете сделать свой рабочий процесс выше и добавить:
#after commiting on bug-fix branch
git checkout staging # => tracks staging on origin
git merge bug-fix-branch # => bring new code in
git push origin staging # => capsitrano acts locally, it needs the code to get from origin
cap staging deploy # => wasnt that easy?
в идеальном мире, у вас также есть производственная ветвь, таким образом, команды git согласовываются командой как
- мастер - крайний код, в котором команда делится между разработчиками
- staging - код, который должен быть протестирован клиентом на промежуточном сервере (ускоренные пересылки при слиянии master)
- production - стабильный выпуск (fastforwards fromstaging)
РЕДАКТИРОВАТЬ: ответ на комментарий был слишком длинным, поэтому мне пришлось добавить к ответу.
У вас есть несколько способов справиться с этим, я могу придумать одинсразу.Исправление на prod должно быть отражено во всех ветках как можно скорее, чтобы ваши разработчики работали на одной базе.Предполагая, что prod имеет прямого общего предка для подготовки и подготовки к master, исправление prod должно быть добавлено в ветку темы на основе HEAD ветви prod, затем объединить это изменение с master и затем в staging и, наконец, для развертывания впроизводство.Идея состоит в том, что единственная разница - это коммиты для исправления ошибки, в следующий раз, когда вы перенесете производство в голову при постановке, у вас уже будет объект, который представляет собой изменение от исправленной ошибки, так что проблем нет.(и поскольку есть хорошая проверка на ошибку, вы знаете, что она работает, после запуска пакета в каждой ветви).В противном случае вам, вероятно, придется выбрать коммит от мастера и применить его к Prod и Staging.Взгляните на pro-git.org, чтобы узнать о более продвинутых рабочих процессах.