提问者:小点点

编写器更新未拉取最新的开发主机


我已经创建了两个git存储库,我们需要使用PHP的composer将它们安装在我们的一个web应用程序中。每个存储库上有两个分支,master和dev master。

在我希望安装包的项目中,我创建了以下composer。json包配置:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "proprietary",
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "impression-works/pdf-generator",
                "version": "dev-master",
                "source": {
                    "url": "git@github.com:...",
                    "type": "git",
                    "reference": "dev-master"
                }
            }
        },
        {
            "type": "package",
            "package": {
                "name": "impression-works/psd-templates",
                "version": "dev-master",
                "source": {
                    "url": "git@github.com:...",
                    "type": "git",
                    "reference": "dev-master"
                }
            }
        }
    ],
    "require": {
        // ...
        "impression-works/psd-templates": "dev-master",
        "impression-works/pdf-generator": "dev-master"
    },
    "autoload": {
        // ...
        "psr-0": {
            "ImpressionWorks\\PsdTemplates": "vendor/impression-works/psd-templates/src",
            "ImpressionWorks\\PdfGenerator": "vendor/impression-works/pdf-generator/src"
        }
    },
    // ...
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

当我最初运行composer update或composer install时,impression works软件包安装得非常完美,但是,如果我对这些存储库进行了更改,并将其推送到dev master,对composer update的任何后续调用都只会报告:

Nothing to install or update

如何强制composer更新到我们的这两个自定义包的最新提交?


共3个答案

匿名用户

我每周都会通过谷歌搜索多次访问这个页面,结果发现它并没有回答我的问题。这就来了。

我用的是packagist.org不是VCS我不想使用VCS,因为它使Composer更加缓慢,而且它已经非常缓慢了。

考虑下面的场景。早期开发中的应用程序依赖于我正在构建的包。该包也在dev的早期,因此dev master作为版本每次都可以获得最新的master。

我修复了包中的一个关键bug,commit

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files

此时,您可以尝试清除缓存。这没用。

在某个时间点,你会偶然发现这个2012年的公开问题。之后,您将发现安装最新版本的唯一方法是在require中使用commit散列。

composer需要供应商/软件包开发主机#0d7d6c88

这需要您手动获取提交哈希并将版本更新为composer.json,然后再次运行作曲家更新。不完全是您对依赖项管理器的期望。看起来这个问题永远不会消失,所以除非有人写了一个更好的作曲家,否则我们会坚持这种行为。

另一种选择是使用Composer标记您想要下载的每一个提交。小心混乱的最小稳定性规则

匿名用户

您应该使用VCS类型的自定义存储库。您使用的包回购有一些文档中强调的限制:

  • 除非更改版本字段,否则Composer不会更新包

匿名用户

我只是有同样的问题。弄清楚之后,解决方法相当简单:清理缓存。

约瑟夫和克里斯蒂安正在寻找的东西可以用这两行来完成:

composer clearcache
composer upgrade

为我加载最后一个存储库主机。希望它能帮助下一个,阅读这篇文章。

重要提示:

您必须等待GitHub服务钩子启动并更新PackageGist上的composer包。在网站上手动组织或使用“更新”按钮。

这不是几秒钟的事。。。您必须等待一段时间(通常为一到五分钟)才能让PackageGist有机会分发更改。

因此,为了持续快速的开发,我只需手动cd供应商/base/包git更新。并且时不时的尝试上面的clearcache升级