Слияние вручную на GIT

Я развиваюсь на собственном языке script с очень возобновленным кодом, в котором большинство конфигураций содержатся внутри самого кода.

Очевидной проблемой могут быть различия в самом коде между тестовыми и производственными средами и то, что я пытаюсь управлять с помощью GIT.

Поскольку моя тестовая версия довольно волатильна, я решил, что могу создать ветвь в GIT для нее, пока происходят изменения (и сохраняйте там код с тестовыми конфигурациями), и после того, как код был принят, я бы объединить его в производство.

Ну, когда я прошу GIT объединить мои ветки, он отлично справляется с кодом.. но и configs также переносится, и мне приходится открывать файл за файлом, меняя его на то, что он был.

В любом случае я могу отключить автоматическое слияние из GIT и угрожать всем, поскольку конфликты кода будут вручную объединены с WinMerge или что-то еще? На самом деле код короток. И так как мне все равно придется редактировать его, чтобы применить настройки...

ps: пожалуйста, обратите внимание, я не спрашиваю, как настроить WinMerge на GIT. У меня эти инструменты работают. Мой вопрос заключается в том, как всегда выполнять ручные слияния между ветвями.

спасибо!

е.

Ответ 1

отключить автоматическое слияние

Этого можно добиться, написав небольшой драйвер слияния, установленный в a .gitattributes file.
Политикой типа unset может быть то, что вы ищете.

Unset

Возьмите версию из текущей ветки как результат пробного слияния и объявите, что слияние имеет конфликты. Это подходит для двоичных файлов, которые не имеют четко определенной семантики слияния.

Но другой интересный драйвер gitattribute будет чистый файл:

http://git-scm.com/figures/18333fig0703-tn.png

Это автоматически выполнит "чистый" script по вашему выбору непосредственно перед тем, как передать "очищенный" контент в репо.
Такой "clean" script может помочь вам автоматизировать изменения, которые вы должны внести в свой код, чтобы сохранить или изменить встроенные в него значения конфигурации.

Ответ 2

Вы говорите: "большинство конфигураций содержатся внутри самого кода", но, надеюсь, вся конфигурация изолирована в файлах, специфичных для конфигурации. Если это так, вы можете сохранить как тестовые, так и выпускные коды кода конфигурации в той же ветки. Затем вы можете использовать переключатель командной строки, чтобы использовать тестовую конфигурацию вместо обычной.

Если ваша программа может прочитать выбор конфигурации из командной строки (или переменную среды, раздел реестра, текстовый файл или что-то еще), вам не придется вообще сливаться. Программа может игнорировать файлы тестовой конфигурации, если переключатель командной строки отсутствует, и игнорировать конфигурацию выпуска, когда присутствует переключатель командной строки.

Это избавит вас от возможных ошибок во время слияния, а также времени, необходимого для слияния.