git composer update not pulling latest dev-master

0sgqnhkj  于 2023-05-21  发布在  Git
关注(0)|答案(7)|浏览(105)

我已经创建了两个git仓库,我们需要使用PHP的composer将它们安装到我们的一个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"
}

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

Nothing to install or update

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

8mmmxcuj

8mmmxcuj1#

我每周都会在谷歌上搜索这个页面好几次,结果发现它并没有回答我的问题。那就这样吧
我使用的是packagist.org,而不是VCS。我不想使用VCS,因为它会使Composer更慢,而且它已经慢得令人痛苦了。
考虑以下场景。早期开发中的应用程序依赖于我正在构建的一个包。这个包在dev中也是早期的,所以dev-master作为版本,每次都能获得最新的master。
我修复了包中的一个关键错误,提交并推送它,在www.example.com中混搭更新按钮packagist.org,然后运行composer update,绝对没有任何React。

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

此时,您可以尝试清除该高速缓存。没用的
在某个时间点,您会偶然发现this open issue from 2012。在此之后,您将发现安装最新版本的唯一方法是在require中使用提交散列。
composer require vendor/package dev-master#0d7d6c88
这需要您手动获取提交哈希并将版本更新为composer.json,然后再次运行composer update。不完全是你所期望的依赖管理器。看起来这个问题永远不会消失,所以除非有人写了一个更好的Composer,否则我们就会陷入这种行为。
另一种方法是使用Composer标记您想要下载的每一个提交。小心混淆的最小稳定性规则和错误,Composer默认抛出。

qzlgjiam

qzlgjiam2#

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

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

z18hc3ub3#

我也有同样的问题。解决这个问题后,解决方案相当简单:清理该高速缓存。
约瑟夫和克里斯蒂安所寻找的东西可以用这两行来实现:

composer clearcache
composer upgrade

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

重要提示:

你必须等待GitHub服务钩子启动并更新www.example.com上的composer包packagist.org或者在网站上手动使用“更新”按钮。
这不是几秒钟的事。。您必须等待一段时间(通常为1到5分钟),给予打包人员有机会分发更改。
因此,为了持续、快速地开发,我只需要手动执行cd vendor/base/packagegit update。并不时尝试上述clearcacheupgrade

vkc1a9a2

vkc1a9a24#

一个比@Bitclaw的答案更简单的版本,对我来说,下面的工作完美无瑕:

composer update --prefer-source developer/package
kmb7vmvb

kmb7vmvb5#

在安装软件包之前,您需要清除该高速缓存composer clearcache
如果已经安装了软件包,则必须将其删除。只有在此之后,清除该高速缓存并再次安装软件包。

f0ofjuux

f0ofjuux6#

运行composer upgrade有点危险,因为它可能会更新您拥有的所有其他依赖项。在这种情况下,我将运行以下命令:

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

8yoxcaq77#

试试这个

composer clear-cache
composer update

相关问题