【问题标题】:How to override sylius 0.18 in composer with my own VCS repository?如何使用我自己的 VCS 存储库覆盖作曲家中的 sylius 0.18?
【发布时间】:2017-01-28 22:51:20
【问题描述】:

我必须保持 0.18 的 sylius/sylius

我已经 fork master 并创建了一个新的分支 0.18,合并到一些 PR 中。

现在我想使用这个存储库而不是 sylius/sylius v0.18 标签

这里是我的 composer.json

{
"name":        "sylius/sylius-standard",
"description": "Starting point for projects powered by Sylius eCommerce.",
"keywords":    ["symfony", "symfony2", "sylius", "distribution", "ecommerce", "cart", "shopping"],
"type":        "project",
"license":     "MIT",
"homepage":    "http://sylius.org",
"authors": [
    {
        "name":     "Paweł Jędrzejewski",
        "homepage": "http://pjedrzejewski.com"
    },
    {
        "name":     "Sylius project",
        "homepage": "http://sylius.org"
    },
    {
        "name":     "Community contributions",
        "homepage": "http://github.com/Sylius/Sylius/contributors"
    }
],
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/ibasaw/DoctrineBehaviors"
    },
    {
        "type": "vcs",
        "url": "https://github.com/ibasaw/sylius"
    }
],
"require": {
    "php": ">=5.6",

    "sylius/sylius": "^0.18@dev",
    ......
},
"require-dev": {
    "behat/behat": "^3.0",
    "behat/symfony2-extension": "^2.0",
    "behat/mink-extension": "^2.0",
    "behat/mink-browserkit-driver": "^1.2",
    "behat/mink-selenium2-driver": "^1.2",
    "behat/mink":  "^1.6",
    "coduo/php-matcher": "^2.1@dev",
    "phpspec/phpspec": "^2.4",
    "phpunit/phpunit": "^4.1",
    "lakion/api-test-case": "^1.0@dev"
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
    "post-install-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Symfony\\Cmf\\Bundle\\CreateBundle\\Composer\\ScriptHandler::downloadCreateAndCkeditor",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ],
    "post-update-cmd": [
        "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
        "Symfony\\Cmf\\Bundle\\CreateBundle\\Composer\\ScriptHandler::downloadCreateAndCkeditor",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
        "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
    ]
},
"autoload": {
    "psr-0": {
        "": "src/",
        "Context": "features/"
    }
},
"config": {
    "bin-dir": "bin"
},
"extra": {
    "branch-alias": {
        "dev-master": "0.18"
    },
    "symfony-app-dir": "app",
    "symfony-web-dir": "web",
    "incenteev-parameters": {
        "file": "app/config/parameters.yml"
    }
}

}

当我进行作曲家更新时,在供应商目录中它需要 sylius/sylius 而不是 ibasaw/sylius

为什么?

如何在我的新分支 0.18 中强制使用 VCS?

【问题讨论】:

  • 我已将 "branch-alias": { "dev-master": "0.18" } 替换为 "branch-alias": { "dev-master": "0.18-dev" }采取良好的存储库。但现在我遇到了这个问题:致命错误:第 9 行的 /var/www/sources/xxx/app/AppKernel.php 中找不到 Class 'Sylius\Bundle\CoreBundle\Kernel\Kernel'
  • 主要是因为Sylius\Bundle\CoreBundle\Kernel\Kernel 在 v0.18 和 v0.19 之间被 Sylius\Bundle\CoreBundle\Application\Kernel 取代。您可以查看here

标签: git github composer-php sylius


【解决方案1】:
  1. 给你的 fork 一个自己的包名(composer.json 中的名称字段)
  2. 使用https://getcomposer.org/doc/04-schema.md#replacereplace 声明你的包替换了原来的包
  3. 在你的根 composer.json 中需要 your

【讨论】:

    【解决方案2】:

    在您的 composer.json 中像这样添加您的分叉 Sylius 存储库

    "repositories": [
    {
      "type": "git",
      "url": "https://github.com/ylastapis/Sylius.git"
    }],
    

    您可以要求您的主分支或创建一个自定义分支(在 Sylius 团队接受您的合并之前合并您的代码,我的称为 master-poc)

    在 require 部分,需要您的分支,前缀为“dev-”。所以 master 变成了 dev-master,因此我的分支 master-poc 现在是 dev-master-poc

    "require": {
        "sylius/sylius": "dev-master-poc"
      },
    

    我还有一个分支别名,不记得还有没有用

      "extra": {
        "branch-alias": {
          "dev-master": "1.0-dev"
        }
      }
    

    文档的一些链接:https://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository

    【讨论】:

    • 它覆盖,但收到错误 Fatal error: Class 'Sylius\Bundle\CoreBundle\Kernel\Kernel' not found in /var/www/sources/xxx/app/AppKernel.php on line 9
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2014-12-19
    • 2014-08-11
    • 1970-01-01
    • 2021-07-12
    • 2017-07-03
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多