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