Можно ли как-нибудь автоматизировать это?
Да: вам нужно не версия 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 драйвер фильтра содержимого .
(изображение из« Настройка Git - атрибуты Git », из « Pro Git book »)
Сценарий smudge
, связанный с файлом шаблона (config.js.tpl
), будет генерировать (автоматически, on git checkout
) фактический файл config.js
путем поиска значений в правом файле значений config.js.<branch>
.
Сгенерированный фактический файл config.js
остается игнорируемым (.gitignore
).
См. Полный пример в " git smudge / clean filter между ветвями ".