如何在Composer中正确地要求一个特定的提交,以便它可以用于依赖包?
我有一个库foo/foo-lib requires从GitHub提交一个特定的提交: 
 { "name": "foo/foo-lib", "repositories": [ { "type": "vcs", "url": "https://github.com/KnpLabs/Gaufrette.git" } ], "require": { "knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e" } } 
它工作正常:
 $ composer update Loading composer repositories with package information Updating dependencies (including require-dev) - Updating knplabs/gaufrette dev-master (2633721 => 2633721) Checking out 2633721877cae79ad461f3ca06f3f77fb4fce02e Generating autoload files 
但是当我需要在其他项目中的图书馆:
 { "name": "bar/bar-app", "repositories": [ { "type": "vcs", "url": "ssh://git.example.com/foo-lib" } ], "require-dev": { "foo/foo-lib": "dev-master" } } 
它会产生依赖性错误:
 Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for foo/foo-lib dev-master -> satisfiable by foo/foo-lib[dev-master]. - foo/foo-lib dev-master requires knplabs/gaufrette dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e -> no matching package found. 
 所以我的问题是:如何正确地require我的库中的GitHub的具体提交,以便它可以在依赖包中? 
 你必须在你的库和你的应用程序中明确地要求在这个散列上的Gaufrette库,以及一个dev标志。 像这样的东西应该在应用程序composer.json : 
 { "name": "bar/bar-app", "repositories": [ { "type": "vcs", "url": "ssh://git.example.com/foo-lib" } ], "require-dev": { "foo/foo-lib": "dev-master", "knplabs/gaufrette": "dev-master#2633721877cae79ad461f3ca06f3f77fb4fce02e" } } 
从文档 :
如果你的一个依赖关系依赖于一个不稳定的包,那么你需要明确地要求它以及足够的稳定性标志。
 文档还build议你需要在你的bar/bar-app Composer文件中包含Gaufrette的存储库,尽pipe在这种情况下这听起来像是不必要的。 我不知道为什么。