2014-12-01 3 views
1

Я использую композитор, который хранит файл блокировки (composer.lock), где хранит текущий статус библиотекаря. Всякий раз, когда я делаю composer update, этот файл перезаписывается. Позже GIT пытается объединить его в push/pull.Избегайте слияния файлов версий в GIT

(мы всегда получаем конфликты между различными машинами для разработчиков, которые должны быть проигнорированы)

Есть ли способ сохранить файл composer.lock в GIT, но есть что-то вроде политики «сила переписывает» применительно к нему?

Фон: До сих пор я сохранял композитор.lock в файле gitignore, но это означает, что мне нужно перезапустить composer update на всех системах (вместо composer install). И это занимает слишком много времени.

+0

Возможно, это помогает [.gitattributes & индивидуальная стратегия слияния для файла] (http://stackoverflow.com/questions/5465122/gitattributes-individual-merge-strategy-for-a-file) –

ответ

0

Способ, которым мы руководствуемся этим в нашей команде, состоит в том, чтобы иметь «ветвь связки композитора». Один из наших членов команды отвечает за управление файлом блокировки композитора, и он выполняет любые обновления, необходимые, если мы изменим composer.json, если мы обновим наши собственные зависимые библиотеки или просто хотим обновить публичные библиотеки. Затем он передаст этот файл блокировки этой ветви и нажимает.

Когда разработчики готовы «отказаться» от обновления, они сливаются с веткой компоновщика-блокировки и просто «выбирают их» во время разрешения конфликта.

Консоль-блокировка - это каноническая ссылка для наших json и файлов блокировки. Это единственное место, где любые изменения в файле священны. Это единственное изменение, которое происходит на этой ветке.

Но, в общем, вы должны быть готовы отказаться от файла блокировки композитора и восстановить его в любое время из композитора.json. Предполагается, что вы правильно настроили свои зависимости и не следуете слишком многим ветвям dev-x, которые находятся в постоянном потоке. Если вы нацеливаете свои зависимости семантической версии на исправления ошибок только, например, на x.y. * (например, 1.3. *), То процесс обновления не должен нарушать ничего, и блокировка становится менее важной.

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