2014-03-24 33 views
4

我已经创建了两个git库,我们需要使用PHP的作曲人来安装在我们的Web应用程序之一中。每个存储库上有两个分支,主设备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": "[email protected]:...", 
        "type": "git", 
        "reference": "dev-master" 
       } 
      } 
     }, 
     { 
      "type": "package", 
      "package": { 
       "name": "impression-works/psd-templates", 
       "version": "dev-master", 
       "source": { 
        "url": "[email protected]:...", 
        "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" 
} 

当我最初运行作曲家更新或安装作曲,印象,作品包安装完美不过,如果我更改这些信息库,并推动他们DEV-大师,作曲家更新任何后续调用简单地报告:

Nothing to install or update 

如何强制作曲家更新到最新提交这两个自定义包的ou RS?

回答

9

您应该使用类型VCS的自定义存储库。您所使用的包装回购有一些限制为highlighted in the docs:除非你改变的版本场

  • 作曲家将不会更新包。
  • Composer不会更新提交引用,所以如果您使用master作为参考,您将不得不删除软件包以强制更新,并且必须处理不稳定的锁定文件。
0

我每周都会从Google搜索中多次访问此页面,只是看到它不能回答我的问题。所以在这里。

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

Condider下面的场景。在早期开发中的应用取决于我正在构建的软件包。该软件包也是开发早期的,所以开发主版本的版本每次都要获得最新的主版本。

我修复了软件包中的一个严重错误,提交&推送它,在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 

此时您可以尝试清除缓存。它没有帮助。

某些时间点你会偶然发现this open issue from 2012。之后你会发现安装最新版本的唯一方法是在require中使用提交哈希。


composer require vendor/package dev-master#0d7d6c88

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

另一种方法是使用Composer标记您要下载的每一个提交。谨防混淆最小稳定性规则&错误,默认情况下,Composer会引发此错误。