Изменить переменную в зависимости от текущей стадии - PullRequest
1 голос
/ 29 сентября 2019

У меня есть серверное приложение, которое состоит из двух этапов: разработка (на ветке разработка) и мастер (на ветке мастер).В нем есть файл config.js, подобный следующему:

API_URL: api.prod.some-server.com

Но я хочу, чтобы "prod" изменился на "dev", когда я нахожусь в develop ветке / на стадии разработки.
Это немного утомительно, если я должен изменить API_URL туда-сюда (prod -> dev), когда я изменил текущую ветку / dev_stage.

Есть ли возможность автоматизировать это?
Спасибо

1 Ответ

1 голос
/ 29 сентября 2019

Можно ли как-нибудь автоматизировать это?

Да: вам нужно не версия config.js (держать ее в секрете)), но для сгенерируйте его (с правильным значением в нем).

Сценарий генерации определит имя извлеченной ветви с помощью:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

Или (начиная с Git 2.22, Q2 2019 )

branch=$(git branch --show-current)

Это означает, что вы можете:

  • версия только файла шаблона config.js.tpl
  • файлы значений версии, названные в честь ветвей: config.js.dev, config.js.master: поскольку они различны, при объединении или переключении ветвей проблем слияния не возникает.

Наконец, вы должны зарегистрироваться (вa .gitattributes декларация ) a драйвер фильтра содержимого .

smudge (изображение из« Настройка Git - атрибуты Git », из « Pro Git book »)

Сценарий smudge, связанный с файлом шаблона (config.js.tpl), будет генерировать (автоматически, on git checkout) фактический файл config.js путем поиска значений в правом файле значений config.js.<branch>.
Сгенерированный фактический файл config.js остается игнорируемым (.gitignore).

См. Полный пример в " git smudge / clean filter между ветвями ".

...