php - 让 composer update 从 git repo 获取最新版本

标签 php git composer-php

我正在尝试摆脱 git 子模块,以便在我的团队中进行开发。最重要的原因是当团队成员在子模块中提交更改,但忘记推送到源,但确实在“根”项目中推送了对这个新提交的引用时,源被破坏,其他开发人员得到reference is not a tree 错误。如果有问题的开发人员在回家之前推送,并且该引用不是树,则这可能会出现问题,并且该引用指向开发人员笔记本电脑上的提交,该笔记本电脑在他的包里,在某处的火车上。

我正在尝试用 composer 替换 git 子模块。我的理由是,如果 git 不知道我的依赖项,这些依赖项就不能破坏 repo。我知道如何从 packagist 添加包,并且我还设法将我们自己的 git 存储库添加到 composer,主要是在 this blog post 的帮助下.

问题,也是难题的最后一 block ,是我们的依赖项是我们正在积极开发的 git 存储库。如果我将更新推送到我们的依赖项之一,我希望开发人员的本地副本在他们执行 composer update 时更新到这个最新版本。我得到的最接近的方法是为依赖项的每次更改创建一个标签,然后用这个新标签的 id 更新我的 composer.json。

我想知道的是,是否有办法让 Composer 总是检查某个分支的最新提交,或者,如果这不可能,当我执行 Composer 更新。我真的不介意标记,我只是不想在开发过程中不断更新 composer.json。

我用于测试的 Composer 文件:

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

我希望 1.0.* 采用从 1.0 开始的最新标签,但是一旦 composer 已经有了 1.0.1,如果我创建它就不会得到 1.0.2。对此的任何帮助将不胜感激。

最佳答案

如果您不必在存储库部分单独指定每个版本,则需要将 composer.json 文件添加到 wkjagt/Seagull 并包含包是这样的:

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

然后 Composer 可以读取您的标签并将它们视为版本。如果你总是想要获取最新版本,则需要你的包带有 dev 标志:

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

关于php - 让 composer update 从 git repo 获取最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595772/

相关文章:

php - 无法加载非 Laravel Composer 包

php - 我是否以正确的方式使用 memcached?

php - MySQL/PHP 自然排序

php - if语句mysql值和form值错误

php - Laravel 5.6 在生产中的应用

git - 在 Git 中,我如何区分分支的第一次提交?

php - 如何让 Composer 从 GitHub 下载 master 分支中的最新提交以获取包?

git - 复制 Git 存储库

GitKraken 更改不显示——与 repo 断开连接

symfony - 将 symfony 更改为特定稳定版本