Я использую capistrano для развертывания приложения RoR. Кодовая база находится в репозитории git, и ветвление широко используется в разработке. Capistrano использует для этого параметры deploy.rb
, один из которых - ветвь для развертывания.
Моя проблема заключается в следующем: пусть я создаю новую ветку A от мастера. Файл развертывания будет ссылаться на главную ветку. Я редактирую это, поэтому A можно развернуть для тестирования среды. Я завершаю работу над этой функцией и объединяю ветку А в мастер. Поскольку файл deploy.rb
от A более свежий, он объединяется и теперь deploy.rb
в главной ветки ссылается A. Время для повторного редактирования.
Это много ненужного ручного редактирования - параметр всегда должен соответствовать текущему имени ветки. Кроме того, легко забыть редактировать настройки каждый раз.
Каким будет лучший способ автоматизировать этот процесс?
Изменить: Выключает кто-то уже сделал то, что мне нужно:
Сегодня утром мне пришлось развернуть ветку хранилища git для промежуточный сервер, но не было самой туманной идеи. Быстрый поиск через исходный код capistrano показал, что я мог бы использовать набор
:branch "branch_name"
в моем развертывании script. Я попробовал, и это сработало. Затем я решил, что мне нужно будет сделать аналогичные изменения во всех моих ветки. Конечно, Im ленивый дерн и задавался вопросом, не было ли лучший способ.Если вы не знакомы с git, вывод команды ветвления gitпредставляет собой список ветвей со звездочкой, обозначающей извлечен на вашей локальной машине. Например:
> git branch * drupal_authentication fragment_caching master
Итак, я понял, что, если бы я просто разбирал вывод и искал ветвь отмечена как текущая:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Теперь я могу развернуть любую ветку на моей локальной машине из одного, общего, развертывания script.