composer多个应用程序在服务器上使用path repo local和vcs

时间:2017-11-21 18:25:54

标签: php composer-php

我有多个应用程序共享一些回购。

在我的本地开发环境中,我通过

对这些回购进行了符号链接
{
    "repositories" : [
        {
            "type" : "path",
            "url" : "../../selion/importbundle"
        }
    ]
}

到我的应用程序,以便我可以立即在所有应用程序上测试回购更改。

我在本地运行composer update将应用程序更改推送到git repo并将它们安装在服务器上。但服务器方面这有点烦人 因为

  1. 我需要更新回购和应用
  2. 我需要更新所有应用
  3. 是否可以在本地使用路径存储库和vcs repos服务器端?

3 个答案:

答案 0 :(得分:1)

我有同样的问题。像我们repositories-dev一样拥有require-dev会很高兴。您可以保留repositories部分(即指向VCS),然后添加覆盖其派生路径的autoload-dev部分:

"repositories" : [
    {
        "type" : "vcs",
        "url" : "git.foo.com:/path/to/my/dependent/repo.git"
    }
],
"autoload-dev": {
    "psr-4": {
        "My\\Dependent\\Repo\\": "/path/to/my/live/dev/install/of/this/repo"
    }
}

因此,composer install会将您图书馆的git repo拉入vendor/,但自动加载器会忽略它并使用您的实时修改。然后在部署/构建时,执行composer install --no-dev(您应该已经在做),然后您将获得git代码。我不确定我是否建议这样做,除非您是项目中唯一的人 - 这可能会导致其他开发人员遇到一些问题。

答案 1 :(得分:0)

我想出的解决方案是使用dev和master分支以及franzl/studio

  1. 全球安装工作室
  2. 将一个studio.json文件添加到您的dev分支

    {     "版本":2,     "路径":[         " ../../ selion / *"     ] }

  3. 将一个studio.json文件添加到没有路径的主分支

    {     "版本":2,     "路径":[     ] }

  4. 在主分支中添加.gitattributes文件,以便在合并dev分支时不会覆盖studio.json文件

    studio.json merge = ours

  5. 现在你可以在开发分支中开发,因为工作室你有符号链接的回购。如果要更新合并,请将更改合并到主分支运行编辑器更新中,该更新将使用vcs repos并推送更改

答案 2 :(得分:0)

我在composer.json中定义了local和vcs repos,如下所示:

"repositories": {
    "local-libs": {
        "type": "path",
        "url": "../lib/*"
    },
    "vendor/foobar": {
        "type": "vcs",
        "url": "git@repository/url/to/foobar.git"
    },
    "vendor/bazqux": {
        "type": "vcs",
        "url": "git@repository/url/to/bazqux.git"
    }
}

因此,默认情况下,composer从本地路径读取依赖项。然后,在安装依赖暂存之前,CI运行composer config repositories.local-libs --unset并且编辑器选择" vcs"的。