janson
@janson
PHP-разработчик

Использование Composer и Git в своём проекте

Добрый день.

У меня назрел такой вопрос: попробовал использовать composer для использования некоторых пакетов в своём проекте, и у меня возникли сложности с пониманием процесса работы в комбинации с Git для своего проекта. В чём собственно сложность:

Прописываю в composer.json следующее:

{
	"require": {
		"psr/log": "dev-master"
	}
}


Запускаю:

composer install


В результате, как и ожидается, получаю в папке vendor добавившиеся папки с psr/log. После этого делаю Commit в свой проект, и… В репозитории в моей папке vendors добавляется только папка psr/log, но отсутствуют сами файлы, которые у меня появились после установки через composer.
То есть на локальной машине эти файлы есть, всё работает. Но в репозитории моего проекта — файлов нет, только директория psr/log.

Что меня смущает: после composer install вместе с psr/log создаётся папка .git/ с файлами (config, description, index, branches/, hooks/ и проч.). Я правильно понимаю, что сейчас папка psr/log у меня связана с репозиторием этого проекта, который слился через composer?

Если да, то каким образом нужно строить процесс добавление пакетов через composer, чтобы они спокойно коммитились в репозиторий моего проекта? Нужно ли для каждого добавленного пакета делать вручную rebase репозитория? Или нужно удалять .git/ директорию после импорта пакета в мой проект?

Вобщем интересует наиболее оптимальный и простой процесс добавления пакетов с собственный проект. С Git я не досконально знаком, поэтому возможно не понимаю чего-то вполне очевидного?
  • Вопрос задан
  • 13852 просмотра
Решения вопроса 1
JekaRu
@JekaRu
Вы не волнуйтесь, фиксация версий будет, вот примерный принцип работы:
Когда делаете «composer.phar update», из репозиториев затягиваются самые последние изменения, а в composer.lock записываются их версии.
Важно composer.lock положить в гит своего проекта.
В случае новой инсталляции проекта, нужно запустить «composer.phar install», тогда установятся именно те версии которые у нас зафиксированы в composer.lock
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
happyproff
@happyproff
Счастливый веб-разработчик
При развёртывании проекта часто нужно выполнить не только копирование файлов из репозитория, но и установку софта (php, mysql, curl, gearman, etc.) и выполнение миграций для заполнения БД и что-то ещё. Импорт внешних зависимостей — одна из таких операций.
А зафиксировав версии пакетов, добавив composer.lock в репозиторий проекта, вы гарантированно получите именно те версии пакетов, что использовали при разработке.
Ответ написан
Комментировать
JekaRu
@JekaRu
Обычно подразумевается, что через composer устанавливаются внешние зависимости. Хранить их в своем репозитории смысла никакого нет.

P.S. Но я задумался над вашем вопросом…
Мало ли какие требования могут быть у проекта, если найду ответ, отпишу.
Ответ написан
IIISpikerIII
@IIISpikerIII
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы