TFS Git 项目 VNEXT 构建中的依赖项目

Dependency projects in a TFS Git project VNEXT build

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

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

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

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

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

您可以将主项目添加为每个其他项目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 master 分支的最新版本

git-tfs doesn't support submodule yet 开始,您需要返回到命令行。


注:如Daniel Mann mentions :

TFS supports multiple repositories in one team project. There's no need to have each thing in its own team project.
That is actually counter to current project organization guidance

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

Daniel 提到博客 post "Many Git Repositories, but one Team Project to rule them all" from Willy-P. Schaub