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