这更像是一个最佳实践问题,因为我们已经有了一个解决方案,但我很好奇是否有更好的解决方法。
我们的项目分为1个巨大的基础项目,所有其他项目依赖于子项目。在构建子项目时,我因此也需要查看那个项目。在TFSVC构建中,这可以在" source"构建定义的选项卡,您可以在其中准确指定构建代理要为您获取的项目。
在git(和VNEXT)中,此选项卡已消失,而只有指定当前存储库分支的选项。我们通过在每个项目中添加一个powershell脚本来解决这个问题,只需运行" git clone mainproject",就可以获得与之前相同的效果。
如果我们的主要项目URL发生变化,那么这意味着我们必须在每个客户项目中更改此脚本,这(但不是不可能)将是乏味的。
有没有人有类似的经历,并找到了更好的方法呢?
答案 0 :(得分:2)
您可以在每个其他项目中将主项目添加为 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
跟踪其最新的上游回购主分支。
从git-tfs doesn't support submodule yet开始,您需要回退到命令行。
注意:由Daniel Mann提及in the comments:
TFS在一个团队项目中支持多个存储库。没有必要在自己的团队项目中拥有每件事物 这实际上与当前的项目组织指导相反
这意味着每个项目的子模块虽然是一个有效的“git”解决方案,但可能不是TFS环境中最好的。
Daniel在Many Git Repositories, but one Team Project to rule them all
中提到了博文“Willy-P. Schaub”