2014-12-27 3 views
1

Нам нужен систематический способ игнорировать определенный файл конфигурации для ветвей, которые мы поддерживаем на git.git merge strategy для статического файла конфигурации в каждой ветке

т. Е. У нас есть файл config.xml с базой данных, средой и другой информацией в разделах 'develop' и 'master', которые мы хотели бы оставить вне результатов 'git merge'.

Мы последовали книги инструкции SCM для стратегий слияния, но мерзавец все еще, кажется, слияние config.xml, когда мы делаем ветвь сливает:
http://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Merge-Strategies

Я также имел взглянуть на этот пост SO, которые требуют сознательного программиста усилия, чтобы выборочно игнорировать config.xml файл - кажется, чернослив ошибки:
Different configs in each git branch

Там же этот SO пост, который объясняет различный мерзавец слияние стратегии, кроме ours, ни один из флористики RS, кажется, в соответствии с нашей цели:
When would you use the different git merge strategies?

Мне интересно, какие методы вы, ребята используют для управления изменения в конфигурационные файлы, который остается довольно последовательны в каждой отрасли, не имея «git merge» натворить?

ответ

2

Проблема с драйвером объединения (например, в «нашем» стратегии), как я уже упоминал в «.gitattributes & individual merge strategy for a file„:

The merge driver is only called in non-trivial cases, i.e. if both master and test have touched setup (and you need to define the merge driver ours first).

Я использовал эту стратегию в“How do I tell git to always select my local version for conflicted merges on a specific file?», но это не вовлечено модификация в обеих ветвях.

Для некоторых файлов с различными настройками, другой вариант был бы content filter driver, как и в "Keep settings in branch"

content filter driver

(изображение, показанное в "Customizing Git - Git Attributes", от "Pro Git book")

Это позволяет сохранить контроль над версией:

  • файл шаблона для самого файла настроек с его разделами (например, @@[email protected]@)
  • скрипт, способный взять файл шаблона и заменить значение заполнителей правильным значением в зависимости от выведенной ветки или содержимого.
  • несколько файлов значений, чтобы ввести правильные значения для разных контекстов.
    Поскольку эти файлы называются по-разному и только модифицированы в соответствующей ветви, они не участвуют в слиянии.
+0

Спасибо за объяснение @VonC. Мы завершили реализацию стратегии замены «config» в рамках процесса развертывания. Стратегия .gitattribute и merge не была построена для нашей насущной цели, как вы говорите – snowbound

Смежные вопросы