Обновить композитор, получить последнюю версию из git repo - программирование
Подтвердить что ты не робот

Обновить композитор, получить последнюю версию из git repo

Я пытаюсь отойти от подмодулей git для разработки в моей команде. Самая важная причина этого в том, что, когда член команды совершает изменения в подмодуле, но забывает проталкивать в исходное состояние, но нажимает ссылку на эту новую фиксацию в "корневом" проекте, происхождение нарушается, а другие разработчики получают ошибка reference is not a tree. Это может быть проблематично, если разработчик, заданный перед тем, как вернуться домой, и эта ссылка, которая не является деревом, указывает на фиксацию на ноутбуке разработчиков, который находится в его сумке, где-то в поезде.

Я пытаюсь заменить подмодули git на композитор. Мое рассуждение состоит в том, что если git не знает о моих зависимостях, эти зависимости не могут нарушить репо. Я знаю, как добавлять пакеты из packagist, и мне также удалось добавить наши собственные репозитории git для композитора, в основном с помощью этого сообщения в блоге.

Проблема и последний фрагмент головоломки заключается в том, что наши зависимости - это git репозитории, над которыми мы активно работаем. Если я нажму обновление на одну из наших зависимостей, я бы хотел, чтобы локальные копии разработчиков обновлялись до этой последней версии, когда они делают composer update. Самое близкое, что я получил, это создать тег для каждого изменения в зависимости, а затем обновить мой composer.json с идентификатором этого нового тега.

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

Файл композитора, который у меня есть для тестирования:

{
    "config": {
        "vendor-dir": "app/vendor"
    },
    "repositories":
    [
        {
            "type": "package",
            "package": {
                "name": "wkjagt/seagull",
                "version": "1.0",
                "source": {
                    "url": "[email protected]:wkjagt/Seagull.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ],
    "require": {
        "wkjagt/seagull": "1.0.*"
    }
}

Я ожидал, что 1.0.* возьмет последний тег, начиная с 1.0, но как только композитор уже имеет 1.0.1, он не получит 1.0.2, если я его создам. Любая помощь с этим будет очень оценена.

4b9b3361

Ответ 1

Если вам не нужно указывать каждую версию отдельно в разделе репозиториев, вам нужно добавить файл composer.json в wkjagt/Seagull и включить пакет следующим образом:

{
   "type": "vcs",
   "url": "https://github.com/wkjagt/Seagull"
},

Затем композитор может читать ваши теги и рассматривать их как версии. Если вы всегда хотите, чтобы последняя версия требовала вашего пакета с флагом dev:

"require": {
    "wkjagt/seagull": "@dev"
}