我的公司有几个产品,它们都使用共享的公共代码库。
> $/Core
> -> /Main/Source (Parent Branch)
>
> $/Product1
> -> /Main/Source
> -> /Main/Source/Core/Source (Child Branch from $/Core)
> -> /Main/Source/...
>
> $/Product2
> -> /Main/Source
> -> /Main/Source/Core/Source (Child Branch from $/Core)
> -> /Main/Source/...
因此,对于这个例子,我们有一个团队收藏和三个团队项目。($/* 是一个团队项目)
我们最初的发布分支有点麻烦。我们没有在/Main到/Releases或/Main到/Development上进行分支,而是分别对每个项目进行了分支。(不是团队项目...解决方案项目。)
这是由于无法具有嵌套分支根的能力所致。(请参见TFS错误:TF203028和TF203071)
根据TFS Ranger Guide和我们修订后的分支发行、热修复、开发方法,我们应该从/Main而不是/Main/Source/Proj1,/Proj2,/Proj3等进行分支。这已经变成了一个相当大的烦恼。
理想情况下,我们希望:
> $/Product1
> -> /Main/ (Branch - Parent)
> -> /Releases
> -> /1.x
> /1 Service Pack (Child Branch from $/Product1/Main
> -> /1.0
> -> /1.0 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
> -> /1.0 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
> -> /1.0.22 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
> -> /1.5
> -> /1.5 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
> -> /1.5 RTM (Child Branch from $/Product1/Releases/1.x/1.5/1.5 Hotfix - Read Only)
解决方案: 1. 我们可以将每个共享分支(即 $/Core)转换为常规文件夹,这样 /Main 下的任何文件夹都不是分支根。然后我们可以从 $/Product1/Main/Source/Core/Source 执行基准合并回到父级 $/Core/Source。
有人有过基准合并的经验吗?我从微软那里了解到它们是例外情况,不应成为常规操作。微软指出,如果您使用 TFS 正确设置项目,则永远不需要执行基准合并。
但是,在跨团队项目时如何做到这一点呢?在任何软件开发公司中,共享库在产品之间很常见。
我也欢迎其他解决方案。
谢谢!