Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS Git项目VNEXT生成中的依赖项项目_Git_Tfs_Build_Asp.net Core - Fatal编程技术网

TFS Git项目VNEXT生成中的依赖项项目

TFS Git项目VNEXT生成中的依赖项项目,git,tfs,build,asp.net-core,Git,Tfs,Build,Asp.net Core,这更像是一个最佳实践问题,因为我们已经有了一个解决方案,但我很好奇是否有更好的方法来解决这个问题 我们的项目分为1个巨大的基础项目,所有其他项目都依赖于此和子项目。因此,在构建子项目时,我还需要检查该子项目。在TFSVC构建中,这可以在构建定义的“源”选项卡上实现,在该选项卡上,您可以精确地指定希望构建代理为您获取的项目 在git(和VNEXT)中,这个选项卡不存在了,取而代之的是,只有指定当前存储库的分支的选项。我们通过向每个项目添加一个powershell脚本来解决这个问题,该脚本只运行“g

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

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

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

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


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

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

cd /path/to/otherproject
git submodule add -b master -- https://url/of/main/project
另一个项目的
git克隆--递归的
也会自动克隆主项目和子目录。
如“”中所述,主项目子模块将在每次
git子模块更新--remote
时跟踪其最新的上游回购主分支

因为,您需要返回到命令行


注:如上所述:

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

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


Daniel提到了

中的博客文章“”,那么,我只是在用一个脚本替换另一个脚本。尤其是由于子模块链接到提交,因此每次都需要升级。@不,您可以将子模块链接到分支(,而且:
git子模块更新--remote--recursive
会自动将子模块更新到分支的最新版本。就是这样!谢谢大家!@潜艇我编辑了答案,以使
-b master
选项在使用子模块时更加可见。还值得注意的是,TFS支持一个团队项目中的多个存储库。没有必要将每件事都放在自己的团队项目中。这实际上与当前的项目组织指南背道而驰。