Нужно GIT предложение рабочего процесса

Я изучал GIT последние пару недель, пытаясь взять под контроль код моей команды. К сожалению, код, с которым мы работаем, является проприетарным языком с некоторыми особенностями, которые мешают мне найти достаточно практичный рабочий процесс для реализации. Тем не менее, я, вероятно, не знаю всех возможностей GIT, поэтому я прошу у вас, ребята, предложения. Я разделю этот пост на три части: 1) как мои файлы; 2) рабочий процесс, который мы уже выяснили; 3) варианты я считаю на будущее.

Мои файлы тогда;

Как я уже сказал, это проприетарный язык сценариев, в котором внутри самого кода вы найдете теги, касающиеся конфигураций (серверы, БД и другие элементы). Это может звучать странно, я знаю, но технически этот кодявляется большой сложный файл конфигурации. Ну, это не может быть изменено, а пока давайте просто оставить его.

У меня также есть две разные среды:dev а такжеprodи я думаю, что его использование очевидно. Из-за странного подхода к коду, если сравнить сценарий вdev к тому же вprod вы бы увидели:

прод:

CodeCode += Code(0)
Code{1} ...
CodeConfig = "ConnectionToProducionDB"
SomeMoreGenericCode.doSomething()
(...)

И вDEV это будет выглядеть так:

CodeCode += Code(0)
Code{1} ...
CodeConfig = "GoToSomeDevDB"
SomeMoreGenericCode.doSomething()
(...)

Это было бы в отношении файлов.

Теперь, что было выяснено;

На первый взгляд мне показалось классическимдавайте ответим Ситуация и так я сделал.

[create a folder and init it]
[copy my code from production and add/commit it]
$ git checkout -b dev
[change these lines with 'CodeConfig' to the dev settings]
[go happy coding and commiting]

Через некоторое время кодирование и тесты завершены, и пришло время объединиться с производством. Вот когда начинается проблема.

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

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

Я попробовал пару разных вещей, чтобы решить это, но безуспешно. Кажется, слияние GIT слишком умно для меня :(

Например,*.xml merge=Unset в мой.gitattributes файл. Или пользовательский драйвер слияния в ~ /, gitconfig, пытающийся вызвать сбой автоматического слияния (хотя я не уверен, правильно ли я это понял).

Возможные решения я думал;

Как я уже сказал, я, вероятно, не знаю всех функций GIT, поэтому мои варианты связаны с теми, кого я знаю. Я ценю ваши инновации;)

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

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

Начальное репоproj1копияprod файлысначала добавить / зафиксировать$ git checkout -b devконфигурироватьdev настройкицикл dev / code / commitскопировать файлы разработчиков вtmpDevDir$ git checkout masterиспользуйте WinMerge для сравненияtmpDevDir противproj1[master branch] и применять только желаемые изменениясовершитьproj1[master branch]$ git merge devконфликты слияния, где это необходимо$ git diff HEAD HEAD^ просмотреть результат слияния и отменить объединенные конфиги$ git commit -am 'final commit for the production code'

И хорошо ... не приятно.

Есть ли у кого-нибудь идеи для более практичного рабочего процесса или других команд, которые бы помогли?

большое спасибо,

е.

Ответы на вопрос(1)

Ваш ответ на вопрос