【问题标题】:Contributing to open source bundles from vendor directory?从供应商目录为开源包做贡献?
【发布时间】:2012-10-30 18:45:14
【问题描述】:

理想情况

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

问题

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

我现在怎么做

我通常为捆绑包做贡献的方式是创建一个分支,将分支放入准系统 symfony 标准版应用程序中,进行更改,然后提交拉取请求。

composer.json分叉?

我能想到的唯一解决方案是删除我正在编辑的包的 packageagist 依赖项,然后将我的 fork 与来自 github 的 composer(作为一个包)包括在内。这样我可以立即获得我的代码并且仍然可以贡献。

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

任何关于在同一时间从事不同项目的同时为捆绑包做出贡献的提示/建议将不胜感激!

【问题讨论】:

  • 我认为你说得对。有两个部分:提交补丁和使用补丁。我通常在我的工作项目中分叉/分支包以进行修复。提交并将其推送到我自己的仓库。然后,如果我想继续使用该修复程序,我会将对该分支/分支的引用添加到作曲家。
  • 我们使用与@MDrollette 相同的方法。首先我们使用标准包。如果需要修复某些东西(例如 DBAL QueryBuilder - github.com/doctrine/dbal/pull/175),我们会分叉它,使用我们的叉子而不是标准的叉子,修改代码,编写测试并打开一个拉取请求,希望修复被包含在内。

标签: symfony composer-php


【解决方案1】:

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

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

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

    "require": {
        "yii2mod/yii2-link-preview": "dev-master"
    },
    

【讨论】:

    【解决方案2】:

    [更新:答案不再有效]

    正如其中一个 cmets 所指出的,这个答案已经存在几年了,不再正确了。请参阅下面的答案以了解正确的操作方式。

    [原答案如下]

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

    【讨论】:

    • 感谢分享。这是我尝试过的唯一一种检索 fork 并使用依赖项的方法。我没有使用视频中显示的存储库的 https 表单,而是使用此表单。它不需要密码- git@github.com:/.git 满足依赖关系的关键是内联别名。
    • 过时的信息,截至 2016 年 10 月,有关此特定问题的正确答案,请参见下文
    【解决方案3】:

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

        "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”。

    【讨论】:

      【解决方案4】:

      不……这坏了。

      我已经尝试过官方的方式来包含一个 fork,这是 composer.json 的一个示例(原始:kitano,fork:jstoeffler):

      对于那些赶时间的人:这不起作用)

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

      它继续使用原始包。不知道问题出在哪里,我不明白一切是如何工作的,但这是我成功地将 fork 添加到项目的方法。

      "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": [""]
                  }
              }
          },
      //...
      ],
      

      【讨论】:

      • 感谢这个替代方法。
      • 只是想补充一下,有一个替代方法很好,但是官方方法确实有效(我今天刚刚用了一个最新的作曲家安装)。我只需要在我的分叉分支名称前附加 dev- 前缀,它就像一个魅力。
      • @mTorres 不幸的是,这对我不起作用。朱利安做到了。
      • 据我了解,如果您的分支与主分支已过时,并且其他模块需要最新的原始版本,则官方方法不起作用。
      • 只是为了向其他人澄清(因为这让我失望了),reference 值应该是您的分支的名称,不包括 dev- 前缀。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多