编译器更新没有拉最新的dev-master



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

在我想要安装的包的项目中,我创建了下面的编写器。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时,印象工程包安装完美,然而,如果我对这些存储库进行更改,并将它们推送到dev-master,任何后续调用composer update只是报告:

Nothing to install or update

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

我每周从谷歌搜索中多次访问这个页面,只是看到它没有回答我的问题。

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

考虑以下场景。早期开发中的应用程序依赖于我正在构建的包。这个包也在dev的早期,所以dev-master作为版本每次都能得到最新的master。

我修复了包中的一个严重错误,提交&按下它,按下packagist.org中的更新按钮,然后运行composer update,绝对没有任何变化。

$ 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 hash。


composer require vendor/package dev-master#0d7d6c88

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

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

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

  • Composer不会更新包,除非你更改了版本字段。
  • Composer不会更新提交引用,所以如果你使用master作为引用,你将不得不删除包来强制更新,并且必须处理不稳定的锁文件。

我刚刚遇到了同样的问题。弄清楚之后,解决方案相当简单:清理缓存。

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

composer clearcache
composer upgrade

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

重要提示:

你必须等待GitHub服务钩子启动并更新packagist.org上的编译器包,或者在网站上手动使用' update '按钮。

这不是几秒钟的事…您必须等待一段时间(通常是一到五分钟),让打包人员有机会分发更改。

所以为了持续快速的开发,我只手动cd vendor/base/packagegit update。并不时尝试上述clearcacheupgrade

比@Bitclaw的答案更简单的版本,对我来说,以下内容完美无瑕:

composer update --prefer-source developer/package

您需要在安装软件包之前清除缓存composer clearcache

如果包已经安装,你必须删除它。只有在此之后,清除缓存并重新安装包。

运行composer升级有点危险,因为它可能会更新所有其他依赖项。在本例中,我将运行以下命令:

composer clearcache;composer update --lock;composer install --prefer-source -vvv

试试这个

composer clear-cache
composer update

相关内容

  • 没有找到相关文章

最新更新