我有多个应用程序共享一些回购。
在我的本地开发环境中,我通过
对这些回购进行了符号链接{
"repositories" : [
{
"type" : "path",
"url" : "../../selion/importbundle"
}
]
}
到我的应用程序,以便我可以立即在所有应用程序上测试回购更改。
我在本地运行composer update将应用程序更改推送到git repo并将它们安装在服务器上。但服务器方面这有点烦人 因为
是否可以在本地使用路径存储库和vcs repos服务器端?
答案 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
将一个studio.json文件添加到您的dev分支
{ "版本":2, "路径":[ " ../../ selion / *" ] }
将一个studio.json文件添加到没有路径的主分支
{ "版本":2, "路径":[ ] }
在主分支中添加.gitattributes文件,以便在合并dev分支时不会覆盖studio.json文件
studio.json merge = ours
现在你可以在开发分支中开发,因为工作室你有符号链接的回购。如果要更新合并,请将更改合并到主分支运行编辑器更新中,该更新将使用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"的。