这个composer.json是否正确,如果它有dev-master

时间:2014-03-05 06:04:44

标签: php symfony composer-php sonata-admin

每当更新我应该保持开发时我一直都会收到错误..今天因为我更新了我的sonata管理员又发现了另一个错误https://groups.google.com/forum/#!topic/sonata-users/4AGVPyBMTSI 我唯一的问题是保持dev在composer.json中的一个好习惯,因为我要安装的所有lib都在他们的文档中显示dev-master。我知道这是非常基本的,但我是作曲家和symfony2的新手...并且没有享受它有点哈哈哈

{
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "~2.4",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "~1.2",
        "twig/extensions": "~1.0",
        "symfony/assetic-bundle": "~2.3",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.4",
        "sensio/distribution-bundle": "~2.3",
        "sensio/framework-extra-bundle": "~3.0",
        "sensio/generator-bundle": "~2.3",
        "incenteev/composer-parameter-handler": "~2.0",
        "friendsofsymfony/user-bundle": "1.3.*",
        "sonata-project/core-bundle": "~2.2@dev",
        "sonata-project/admin-bundle": "2.2.*@dev",
        "sonata-project/block-bundle": "dev-master",
        "sonata-project/cache": "1.*@dev",
        "sonata-project/cache-bundle": "2.2.*@dev",
        "sonata-project/jquery-bundle": "1.8.*@dev",
        "sonata-project/easy-extends-bundle" : "dev-master",
        "sonata-project/doctrine-orm-admin-bundle": "dev-master",
        "sonata-project/user-bundle": "dev-master"
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "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",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.4-dev"
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果你没有积极开发其他软件并且知道那里发生了什么,你应该避免使用像dev-master这样的命名分支。

原因如下:今天该分支可能是组件2.x版本开发的一小部分。您很高兴使用Composer进行更新,一切正常。

现在该软件决定将发布新的主要版本,并且他们开始进行向后兼容的更改。现在,只要您不再更新(或仅显式更新OTHER软件),使用dev-master的自己的软件将指向旧的2.x提交,但从长远来看,事情将会中断:

因为您添加的其他组件可能依赖于dev-master中的该软件,但它们意味着新的3.x开发,您的旧软件将满足该依赖关系,但不会满足与之相关的代码(请记住:向后兼容的更改也可能是前向不兼容的更改。因此,即使没有更新该特定组件,事情也可能在某些时候开始破坏。

如果你盲目地更新整个事情,如果发生这样的更新,你更有可能遇到问题。

使用依赖项中的版本号更容易。您可以声明要求任何版本2.*,这将阻止更新到任何3.x版本,并且它允许Composer检测依赖于该3.x版本的第三个组件与旧版本2不兼容。 x仍然安装。它会导致选择仍然依赖于2.x的旧版本,或者拒绝完全安装它。这实际上是一件好事,因为它允许你手动更新并查看事情是否中断(你确实有测试,不是吗?) - 你可以修复它们。

如果您遇到自己喜欢的软件,并且维护人员还没有标记版本,请很好地问他们。要么他们用标签回复,要么你想要寻找更适合你需要的另一个图书馆。否则,期望隐含地成为他们开发团队的一员并帮助调试他们的软件(这也是一件好事 - 但要准备好花费额外的时间)。