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

标签 git tfs build asp.net-core

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

我们的项目分为 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提及 in the comments :

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 提到来自 Many Git Repositories, but one Team Project to rule them all 的博文“Willy-P. Schaub

关于git - TFS Git 项目中的依赖项目 VNEXT 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32165357/

相关文章:

GIT 如何从非连续提交创建补丁

angular - 将 Angular 部署到 IIS 7.5 无法正常工作

Xcode - 但是......我们的文件在哪里?

eclipse - 我可以有一个既是 git 工作区又是 svn 工作区的工作区吗?

git - rsync 根据 .gitignore & .hgignore & svn :ignore like --filter=:C 排除

git - 在 Jenkins 中,如何仅当分支失败是主分支时才发送电子邮件?

tfs - 我可以在 TFS 2010 中隐藏选定区域/迭代节点吗?

azure - 如何在发布构建期间用 configSource 替换连接字符串文件?

tfs - 从 TFS 获取未绑定(bind)的解决方案

ios - 如何在 IOS 设备上运行我的 Ionic 应用程序(带有 Meteor 后端)?