从供应商目录贡献开源包?

时间:2012-11-10 19:04:38

标签: symfony composer-php

理想情况

通常在处理Symfony2项目时,我会发现我想在其中一个依赖项中更改的内容。如果我能找到一种方法来简单地在供应商中更改它,然后轻松地将更改作为拉取请求推送,那么我可能会更频繁地做出贡献(而不是用本地子包覆盖该部分)。

问题

如果没有作曲家在下次更新时吓坏我,我无法更改供应商目录。如果我提交拉取请求,那么我可能需要一段时间才能真正使用供应商中的代码,这实际上是对我的新功能的贡献。

我现在怎么做

我通常对捆绑包做出贡献的方法是制作一个fork,将fork放入一个准系统symfony标准版应用程序中,进行更改,然后提交一个pull请求。

将叉子放入composer.json

我能想到的唯一解决方案是删除我正在编辑的包的包装依赖关系,然后从github包含我的fork与composer(作为包)。这样我就可以立即得到我的代码并且仍然可以做出贡献。

这是唯一的解决方案吗?你是怎么做到的?

任何在同一时间处理不同项目时为捆绑做出贡献的提示/建议都将不胜感激!

4 个答案:

答案 0 :(得分:38)

不......这已经破了。

我尝试过使用fork的官方方法,这是composer.json的一个例子(原文:kitano,fork:jstoeffler):

对于那些匆忙的人:这样做不行)

"repositories": [
//...
    {
        "type": "vcs",
        "url": "https://github.com/jstoeffler/KitanoConnectionBundle",

    },
//...
],

继续使用原始包。不知道问题是什么,我不知道一切是如何工作的,但这就是我如何成功地将一个分支添加到项目中。

"repositories": [
//...
    {
        "type": "package",
        "package": {
            "name": "kitano/connection-bundle",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/jstoeffler/KitanoConnectionBundle.git",
                "type": "git",
                "reference": "master"
            },
            "autoload": {
                "classmap": [""]
            }
        }
    },
//...
],

答案 1 :(得分:7)

[更新:答案无效]

正如其中一条评论所指出的,这个答案已经有几年了,不再正确了。请参阅下面的答案,了解正确的方法。

[原帖在下面]

这是作曲家创作者Jordi Boggiano(@Seldaek)推荐的方法。 从他今年早些时候在Symfony Live旧金山的演讲中看到的(2分钟时刻): http://www.youtube.com/watch?list=PLo7mBDsRHu11ChvScWUE7MN1Qo5QVHQEz&feature=player_detailpage&v=P3NwF8RV1lY#t=120s

答案 2 :(得分:2)

截至2017年,正确的做法是:

  1. 将您的GitHub分支链接添加到repositories

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/crimson-med/yii2-link-preview"
        }
    ],
    
  2. 将源添加到require的{​​{1}}

    composer.json

答案 3 :(得分:0)

仅供参考,我刚尝试了第一个选项:

    "repositories": [{
    "type": "vcs",
    "url": "https://github.com/thujohn/twitter"
}],
"require": {
    "laravel/framework": "4.2.*",
    "thujohn/twitter": "dev-master",
    "anahkiasen/flickering": "^0.1.2",
    "fairholm/elasticquent": "dev-master",
    "facebook/php-sdk-v4" : "~5.0"
},

它运作良好。

vagrant@dev:/var/www$ sudo php composer.phar update
Loading composer repositories with package information                                                                                                                                                         Updating dependencies (including require-dev)         
  - Removing thujohn/twitter (2.0.4)
  - Installing thujohn/twitter (dev-master 7a92118)
    Downloading: 100%         

Writing lock file
Generating autoload files
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader

我只需要指定" master"分支名称为" dev-master"。

相关问题