Ручное слияние по GIT - PullRequest
       47

Ручное слияние по GIT

7 голосов
/ 14 июня 2010

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

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

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

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

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

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

спасибо!

f.

Ответы [ 2 ]

5 голосов
/ 14 июня 2010

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

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

Unset

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

Но еще одним интересным драйвером gitattribute будет clean filer :

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

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

2 голосов
/ 14 июня 2010

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

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

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

...