gitattributes неправильно устанавливает драйвер слияния - PullRequest
8 голосов
/ 25 ноября 2011

У меня следующая структура каталогов:

project/
    .git/
        ...
    app/
        ...
    config/
        initializers/
            braintree.rb
        environments/
            production.rb
    .gitattributes

В моем проекте используются две основные ветви: основная и промежуточная, каждая из которых отслеживает разные пульты (приложения производства и подготовки герои).

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

Вот что я хочуdo: свободно объединяйте эти две ветви, сохраняя их версии braintree.rb и production.rb раздельными.

Чтобы выполнить это, вот что я вставил в .gitattributes (согласно книге ProGit):

config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours

Файл присутствует в обеих ветках.

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

У меня такое чувство, что я упускаю что-то ужасно очевидное, но пока что это ускользает от меня.Я знаю, что другие ответы здесь были связаны с созданием пользовательских драйверов слияния, но в книге ProGit ничего не говорится об этом процессе и, по-видимому, подразумевается, что драйвер ours встроен (и я видел его упомянутым на страницах руководства, поэтомуЯ относительно уверен, что это так).Единственное, о чем я могу думать, это то, что я каким-то образом поставил .gitattributes в неправильном месте или испортил его содержимое, но я не могу найти много информации об этом.Я пытался переместить его в тот же каталог, что и файлы, но безрезультатно.

В случае, если это поможет, я использую git версии 1.7.2 на OS X. Любая помощь будет высоко ценится.

1 Ответ

3 голосов
/ 04 апреля 2012

Существует два превосходных ответа переполнения стека, которые решают эту проблему:

Как мне сказать git всегда выбирать мою локальную версию для конфликтующих слияний в конкретном файле?

и

.gitattributes & отдельная стратегия слияния для файла

Я бы предложил прочитать верхний ответ в первой ссылке.Это долго, но очень подробно и информативно.

...