理想情况
通常在处理Symfony2项目时,我会发现我想要在其中一个依赖项中更改的内容.如果我能找到一种方法来简单地在供应商中更改它,然后轻松地将更改作为拉取请求推送,那么我可能会更频繁地做出贡献(而不是用本地子包覆盖该部分).
问题
如果没有作曲家在下次更新时吓坏我,我无法更改供应商目录.如果我提交拉取请求,那么可能需要一段时间才能真正使用供应商中的代码,这实际上是对我的新功能的贡献.
我现在怎么做
我通常贡献一个包的方式是制作一个fork,将fork放入一个准系统symfony标准版应用程序,进行更改,然后提交一个pull请求.
把叉子放进去composer.json?
我能想到的唯一解决方案是删除我正在编辑的包的packagist依赖,然后从github包含我的fork与composer(作为包).这样我立即得到我的代码,仍然可以贡献.
这是唯一的解决方案吗?你怎么做呢?
任何在同一时间处理不同项目时为捆绑做出贡献的提示/建议将不胜感激!
我有一个我已经构建的PHP框架,我正在尝试将所有内容分成不同的repos并将其设置在composer中以使我的生活更轻松.
基本上,我有3个repos问题:一个用于集合类,用作集合数据类型的基类("liftkit/collection"),另一个是输入变量的包装器("liftkit/input",它依赖于集合repo),以及核心的第三个("liftkit/core",它取决于输入包装器.
当我运行composer update"liftkit/input"时,它会安装"liftkit/collection"并且工作正常,但是当我在"liftkit/core"上运行时,它会给我以下错误:
问题1 - liftkit/input @dev的安装请求 - >可通过liftkit/input [dev-master]来满足. - liftkit/input dev-master需要liftkit/collection dev-master - >找不到匹配的包.
这是我的composer.json文件:
{
"name": "liftkit/collection",
"description": "LiftKit base class for collections",
"license": "LGP-2.1",
"autoload": {
"psr-4": {
"LiftKit\\": "src/"
}
},
"require": {
},
"require-dev": {
"phpunit/phpunit": "4.5.*"
}
}
{
"name": "liftkit/input",
"description": "LiftKit input wrappers",
"license": "LGP-2.1",
"autoload": {
"psr-4": {
"LiftKit\\": "src/"
}
},
"require": {
"liftkit/collection": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "4.5.*"
},
"repositories": [
{
"type": "git", …Run Code Online (Sandbox Code Playgroud) 我正在开发一个laravel包(我们称之为包A),它需要另一个包(包B https://github.com/dropbox/dropbox-sdk-php).
我已经制作了一个包B的分支(https://github.com/EmilioBravo/dropbox-sdk-php),在一个新的分支"fix64"中做了一些更改,并将我的GitHub repo添加为composer.json中的一个存储库.包装A,如作曲家文档中所示:
"repositories": [
{
"type": "vcs",
"url": "https://github.com/EmilioBravo/dropbox-sdk-php"
}
],
"require": {
"php": ">=5.4.0",
"illuminate/support": "4.2.*",
"dropbox/dropbox-sdk": "dev-fix64"
},
Run Code Online (Sandbox Code Playgroud)
如果我从包A中调用composer update它会正确地下载我的fork,但是,如果我在另一个项目(Project C)中使用包A作为依赖项并从中调用composer update,那么composer说它找不到dev-fix64 .
问题1
Run Code Online (Sandbox Code Playgroud)- emilio-bravo/platform dev-dropboxfix requires dropbox/dropbox-sdk dev-fix64 -> no matching package found.
emilio-bravo/platform dev-dropboxfix需要dropbox/dropbox-sdk dev-fix64 - >找不到匹配的包.
emilio-bravo/platform dev-dropboxfix的安装请求 - > emilio-bravo/platform [dev-dropboxfix]可满足.
只有当我在项目C composer.json中添加我的repo作为存储库时,它才会找到我的fork的分支.
另一种方法是我发现将我的叉子克隆到满意的存储库中.
但感觉不对.我怎样才能让作曲家从GitHub找到我的前叉?
我正在尝试为捆绑添加缺少的功能.这是我到目前为止所做的:
composer install现在,问题是,如何将它包含在我自己的Symfony项目中以便自动加载?我想在发送拉取请求之前在自己的项目中测试我的更改.
我在Github上派生了一个库,现在想将我的fork加载到项目中,而无需将派生的库添加到packagist中。添加存储库后出现以下错误,并要求将其添加到composer.json:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package cnizzardini/ssl-certificate could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
Run Code Online (Sandbox Code Playgroud)
这是我完整的composer.json
{
"name": "cakephp/app",
"description": "CakePHP skeleton app",
"homepage": "http://cakephp.org",
"type": "project",
"license": "MIT",
"require": …Run Code Online (Sandbox Code Playgroud)