20

我正在尝试摆脱 git 子模块以在我的团队中进行开发。最重要的原因是当团队成员在子模块中提交更改,但忘记推送到源,但确实在“根”项目中推送了对这个新提交的引用时,源被破坏,其他开发人员得到reference is not a tree错误。如果有问题的开发人员在回家之前推送,并且不是树的引用指向开发人员笔记本电脑上的提交,这可能是有问题的,笔记本电脑在他的包里,在某处的火车上。

我正在尝试用 composer 替换 git 子模块。我的理由是,如果 git 不知道我的依赖项,这些依赖项就不能破坏 repo。我知道如何从 packagist 添加包,并且我还设法将我们自己的 git 存储库添加到 composer,主要是在这篇博文的帮助下。

问题,也是难题的最后一块,是我们的依赖项是我们正在积极处理的 git 存储库。如果我将更新推送到我们的一个依赖项,我希望开发人员的本地副本在他们执行composer update. 我得到的最接近的是为对依赖项的每次更改创建一个标签,然后用这个新标签的 id 更新我的 composer.json。

我想知道的是,是否有办法让作曲家总是检查某个分支的最新提交,或者,如果这不可能,当我执行composer update. 我真的不介意标记,我只是不想在开发过程中不断更新 composer.json。

我用于测试的作曲家文件:

{
    "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.0.1,如果我创建它就不会得到 1.0.2。对此的任何帮助将不胜感激。

4

1 回答 1

24

如果您不必在存储库部分中单独指定每个版本,则需要将composer.json文件添加到wkjagt/Seagull并包含这样的包:

{
   "type": "vcs",
   "url": "https://github.com/wkjagt/Seagull"
},

然后 Composer 可以阅读您的标签并将它们视为版本。如果您总是想要获取最新版本,则需要您的包带有 dev 标志:

"require": {
    "wkjagt/seagull": "@dev"
}
于 2013-01-30T09:17:21.543 回答