作曲家更新没有拉​​最新的开发大师

jos*_*erk 15 git composer-php

我已经创建了两个git存储库,我们需要使用PHP的作曲家在我们的一个Web应用程序中安装它们.每个存储库上有两个分支,masterdev-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"
}
Run Code Online (Sandbox Code Playgroud)

当我最初运行composer update或composer install时,impression-works包安装完美,但是,如果我对这些存储库进行更改并将它们推送到dev-master,则对composer update的任何连续调用都会报告:

Nothing to install or update
Run Code Online (Sandbox Code Playgroud)

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

Sel*_*aek 14

您应该使用VCS类型的自定义存储库.您使用的软件包存储库有一些限制,如文档中所示:

  • 除非您更改版本字段,否则Composer不会更新包.
  • Composer不会更新提交引用,因此如果您使用master作为引用,则必须删除该包以强制更新,并且必须处理不稳定的锁定文件.


Chr*_*ian 14

我通过Google搜索每周多次来到此页面,但却发现它无法解决我的问题.所以这里.

我正在使用packagist.org,而不是VCS.我不想使用VCS,因为它会让Composer变得更慢,而且它已经很慢了.

Condider以下场景.在早期开发中的应用取决于我正在构建的包.该软件包也是dev的早期版本,所以dev-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
Run Code Online (Sandbox Code Playgroud)

此时您可能会尝试清除缓存.它没有帮助.

有些时候你会在2012年偶然发现这个未解决的问题.之后你会发现安装最新版本的唯一方法是在require中使用commit hash.


composer require vendor/package dev-master#0d7d6c88

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

另一种方法是使用Composer标记要下载的每个提交.谨防混淆最小稳定性规则和错误,默认情况下Composer会抛出这些规则和错误.


Jör*_*ier 6

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

Josef 和 Christian 正在寻找的东西可以通过以下两行来完成:

composer clearcache
composer upgrade
Run Code Online (Sandbox Code Playgroud)

这为我加载了最后一个存储库主。希望它有助于下一个,阅读这个线程。

重要的提示:

您必须等待 GitHub 服务挂钩启动并更新 packagist.org 上的 composer 包,或者手动使用站点上的“更新”按钮。

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

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


Mag*_*ron 6

比@Bitclaw的答案更简单的版本,对我来说以下工作完美无缺:

composer update --prefer-source developer/package
Run Code Online (Sandbox Code Playgroud)