我正试图摆脱git子模块,以便在我的团队中进行开发。最重要的原因是,当一个团队成员提交子模块中的更改,但忘记推送到源,但确实在“根”项目中推送对此新提交的引用时,原点被破坏,其他开发人员获得reference is not a tree
错误。如果有问题的开发人员在回家之前推出了这个问题,并且那个不是树的引用指向开发商笔记本电脑上的提交,这是在他的包里,在某个地方的火车上。
我正在尝试用composer替换git子模块。我的理由是,如果git不知道我的依赖关系,这些依赖关系不能破坏repo。我知道如何从packagist添加包,我还设法将自己的git存储库添加到composer中,主要是在this blog post的帮助下。
问题和最后一个难题是我们的依赖关系是我们正在积极研究的git存储库。如果我将更新推送到其中一个依赖项,我希望开发人员的本地副本在执行composer update
时更新到此最新版本。我得到的最接近的是为依赖项的每次更改创建一个标记,然后用这个新标记的id更新我的composer.json。
我想知道的是,是否有办法让作曲家总是查看某个分支的最新提交,或者,如果不可能的话,总是在我做{{{时{{{ 1}}。我并不介意标记,我只是不想在开发过程中不断更新composer.json。
我用于测试的作曲家文件:
composer update
我期待{
"config": {
"vendor-dir": "app/vendor"
},
"repositories":
[
{
"type": "package",
"package": {
"name": "wkjagt/seagull",
"version": "1.0",
"source": {
"url": "git@github.com:wkjagt/Seagull.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"wkjagt/seagull": "1.0.*"
}
}
采用从1.0开始的最新标记,但是一旦编辑者已经拥有1.0.1,如果我创建它就不会获得1.0.2。对此有任何帮助将非常感激。
答案 0 :(得分:23)
如果您不必在存储库部分单独指定每个版本,则需要将composer.json
文件添加到 wkjagt / Seagull 并包含如下所示的包:
{
"type": "vcs",
"url": "https://github.com/wkjagt/Seagull"
},
然后,Composer可以读取您的标签并将其视为版本。如果您总是希望获得最新版本,请使用带有dev标志的包:
"require": {
"wkjagt/seagull": "@dev"
}