Должен ли я фиксировать зависимости в каталоге моего поставщика?

Общая рекомендация - нет. Каталог vendor (или там, где установлены ваши зависимости) должен быть добавлен в .gitignore/svn:ignore/etc.

Лучшая практика заключается в том, чтобы все разработчики использовали Composer для установки зависимостей. Аналогичным образом, сервер сборки, CI, средства развертывания и т. Д. Должны быть адаптированы для запуска Composer как части их начальной загрузки проекта.

Хотя может возникнуть соблазн совершить его в некоторой среде, это приводит к нескольким проблемам:

  • Большой размер репозитория VCS и различается при обновлении кода.
  • Дублирование истории всех ваших зависимостей в вашей собственной VCS.
  • Добавление зависимостей, установленных через git, в git repo покажет их как подмодулей. Это проблематично, потому что они не являются реальными подмодулями, и вы столкнетесь с проблемами.

Если вы действительно чувствуете, что вам нужно это сделать, у вас есть несколько вариантов:

  1. Ограничьте себя установкой отмеченных выпусков (без версий dev), чтобы получить только смонтированные установки и избежать проблем с подмодулями git.
  2. Используйте опцию --prefer-dist или установите preferred-install для dist в вашем config.
  3. Удалите каталог .git каждой зависимости после установки, после чего вы можете добавить их в свой репозиторий git. Вы можете сделать это с помощью rm -rf vendor/**/.git в ZSH или find vendor/-type d -name ".git" -exec rm -rf {} \; в Bash. Но это означает, что вам придется удалить эти зависимости с диска перед запуском обновления.
  4. Добавьте правило .gitignore (/vendor/**/.git), чтобы игнорировать все папки поставщика .git. Этот подход не требует удаления зависимостей с диска до запуска обновления для композитора.