在工作中,我有一个GitLab设置作为Git存储库来托管一个可以并将在多个站点中使用的通用编写器包(symfony2包用于它的价值)。并非完全不常见的做法。
我设法配置composer.json来看彼此:
在我现在正在工作的网站上,我有:
"repositories": [
{
"type": "package",
"package": {
"name": "coresystem/tools-bundle",
"version": "dev-master",
"source": {
"url": "{sorry this is private}",
"type": "git",
"reference": "master"
},
"autoload": {
"psr-0": {
"CoreSystem\\ToolsBundle": "src"
}
}
}
}
]
并在包存储库上:
{
"name": "coresystem/tools-bundle",
"type": "symfony-bundle",
"description": "A collection of common use tools across the network of core sites",
"license": "DBAD",
"authors": [
{
"name": "Kyle Harrison",
"email": "{private, sorry}"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0",
"symfony/framework-bundle": "~2.5"
},
"autoload": {
"psr-0": {
"CoreSystemToolsBundle": "src/"
}
}
}
在网站上,当我运行$ composer require coresystems/tools-bundle dev-master
时,它工作正常。它下载了repo,安装了它。一切都很棒。
直到我需要更新工具包。
我做了我的更改,并将它们推送到工具gitlab repo。
但是在网站上,当我运行$ composer update coresystems/tools-bundles
时,它说没有什么可以更新的。
出于绝望,我开始设置一些标签,推动这些标签,并尝试像$ composer update coresystems/tool-bundle 1.*@dev
这样的事情,但无济于事。
为了让它工作,我必须先运行$ composer remove coresystems/tools-bundle
,然后再次运行$ composer require coresystems/tools-bundle dev-master
,以便重新放入存储库
是什么给出的?
答案 0 :(得分:2)
不要使用type:package
作为存储库描述。这是太多的手动工作要做,因为如果您使用受支持的存储库(SVN,Git,Mercurial)并且已将composer.json
文件提交到其中,Composer可以检测到它需要知道的所有内容。
只需使用以下命令为Composer提供存储库的位置:
"repositories" : [
{ "type":"vcs", "url":"your private URL of the Git repo"}
]
这就是全部。无需复制自动加载定义或包描述中需要提及的任何其他内容。