lamo4ok
@lamo4ok
Программист

GIT: Каким наилучшим образом решаются постоянно возникающие конфликты при слиянии веток develop и production?

Вопрос наверняка имеет очевидный ответ, на который мне просто не удается правильно составить поисковый запрос. Тем не менее, ситуация такова:

Есть две ветки, в одной из них ведется разработка продукта, в другой - хранится версия для выката на рабочий сервер. Очевидно, что эти две ветки имеют разные настройки окружения, возьмем как пример самое простое - в файле конфигурации в случае ветки для разработки указано окружение local, в файле для рабочего сервера - production.

Соответственно, при слиянии этих двух веток будет постоянно происходить замена значения этой переменной с production на local.

Так вот, вопрос: каким образом выстраивается рабочий процесс, дабы этого не происходило? Да и вообще, как верно производить слияние, если в двух ветках репозитория должны быть тем не менее всегда какие-то постоянно присутствующие различия?

Уточнение: различий, конечно же, намного больше, так что не интересует какой-то ручной процесс, желательно именно выстраивание рабочего процесса таким образом, чтобы о данной проблеме не болела лишний раз голова.
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
Решение, вроде, вполне очевидное - выносите все настройки в (конфигурационные) файлы, которые игнорируются git-ом. Делайте шаблоны этих файлов (оставляем в git), а в README проекта описываем процедуру их копирования в нужное место и "донастройки" (какие переменные нужно изменить, какие добавить/убрать и т.д.). На конкретной площадке (production, stage, test, dev, local etc) свои настройки, все логично

Еще как вариант - использование environment-переменных (переменных окружения), тогда файлы как таковые вообще не понадобятся. Но:
- их поведением часто сложно управлять, и, как следствие, сложно отлавливать ошибки при неверных значениях
- все равно их нужно где-то прописывать (bash-скрипты, .htaccess и т.д.), но теперь уже в разных местах
- все равно лучше задокументировать, хотя бы чтоб самому потом не забыть :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Очевидно, что эти две ветки имеют разные настройки окружения
нет. Различие должно быть только в одной переменной, в которой записано в каком сейчас окружении работает приложение

Переменную окружения можно установить export foo=bar

АПД: все "секретное" не должно попадать в репу и также должно быть в переменных окружения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы