【问题标题】:Dependency projects in a TFS Git project VNEXT buildTFS Git 项目 VNEXT 构建中的依赖项项目
【发布时间】:2015-11-16 21:02:09
【问题描述】:

这更像是一个最佳实践问题,因为我们已经有了一个解决方案,但我很好奇是否有更好的方法来解决这个问题。

我们的项目分为 1 个巨大的基础项目,所有其他项目都依赖这些基础项目和子项目。因此,在构建子项目时,我还需要检查那个。在 TFSVC 构建中,这可以在构建定义的“源”选项卡上进行,您可以在其中准确指定您希望构建代理为您获取哪些项目。

在 git(和 VNEXT)中,这个选项卡消失了,取而代之的是指定当前存储库分支的选项。我们通过在每个项目中添加一个 powershell 脚本来解决这个问题,该脚本只需运行“git clone mainproject”,即可获得与以前相同的效果。

如果我们的主项目 URL 发生变化,这意味着我们必须在每个客户项目中更改此脚本,这(虽然并非不可能)会很乏味。

有没有人经历过类似的事情并找到了更好的方法?

【问题讨论】:

    标签: git tfs build asp.net-core


    【解决方案1】:

    您可以将您的主项目添加为 submodule 在您的每个其他项目中

    cd /path/to/otherproject
    git submodule add -b master -- https://url/of/main/project
    

    另一个项目的git clone --recursive 也会自动克隆您的主项目,作为子目录。
    如“git submodule tracking latest”中所述,该主项目子模块将在每个 git submodule update --remote 跟踪其上游 repo 主分支的最新信息。

    由于git-tfs doesn't support submodule yet,您需要回退到命令行。


    注意:正如Daniel Mann 提到in the comments

    TFS 在一个团队项目中支持多个存储库。无需将每件事都放在自己的团队项目中。
    这实际上与当前的项目组织指南背道而驰

    这意味着每个项目都有一个子模块的想法,虽然是一个有效的“git”解决方案,但在 TFS 环境中可能不是最好的。

    Daniel 提到了来自Willy-P. Schaub 的博文“Many Git Repositories, but one Team Project to rule them all

    【讨论】:

    • 好吧,在这种情况下,我只是将一个脚本换成另一个脚本。特别是因为子模块链接到提交,因此每次都需要升级。
    • @submarines 不,您可以将子模块链接到分支(stackoverflow.com/a/9189815/6309,也可以是 stackoverflow.com/a/18799234/6309):git submodule update --remote --recursive 会自动为您更新子模块到最新的分支。
    • 就是这样!谢谢!
    • @submarines 我已经编辑了答案,使-b master 选项在使用子模块时更加明显。
    • 另外值得注意的是,TFS 在一个团队项目中支持多个存储库。没有必要将每件事都放在自己的团队项目中。这实际上与当前的项目组织指南背道而驰。
    猜你喜欢
    • 2013-01-30
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多