gitattributes неправильно устанавливает драйвер слияния

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

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

Мой проект использует две основные ветки, master и staging, каждая из которых отслеживает разные удаленные (production и staging heroku apps).

Идея заключается в том, что ветка staging продвигается вперед с новыми функциями, они размещаются и тестируются на удаленном staging, затем master ускоренно пересылается в соответствии с staging и размещается на удаленном production.

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

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

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

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

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

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

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

8
задан Luke 25 November 2011 в 08:57
поделиться