【发布时间】:2012-10-02 11:38:59
【问题描述】:
我们使用的是 TFS 2010,但我们的依赖项/分支管理存在一些非常烦人的问题。
乍一看,我们的问题很常见。我们有AppServer、WebClient 和WinClient。 WebClient 和 WinClient 都依赖于 AppServer。还有两个额外的限制:
- 我们更喜欢包含所用依赖项的特定版本
- 我们更喜欢包含源代码而不是二进制文件,因为它更容易实现和测试来自特定来源的
AppServer更改,例如WinClient。
我们选择以下文件夹结构:
\
|-AppServer (1)
|-WebClient
|-Dependencies
|-AppServer (2)
|-Sources
|-WinClient
|-Dependencies
|-AppServer (3)
|-Sources
AppServers (2) 和 (3) 是 AppServer (1) 的分支(作为一级分支)。一切运行良好,符合我们的开发场景。
现在,麻烦来了。假设我们想在WebClient 上实现“branch-per-release”模式,这意味着将整个WebClient 层次结构分支到另一个地方。我们不能这样做,因为 TFS2010 不允许嵌套第一类分支。
为了增加挑战,我们设想分支层次结构(仅适用于WebClient,我们还有其他几个依赖和依赖项目)是这样的:
WebClient
|-Client1
| |-feature-1
| |-feature-2
| |-v1 Release
| | |-v1 hotfix1
| | |-v1 hotfix2
| |-v2 Release
| |-v1 hotfix1
| |-v1 hotfix2
|
|-Client2
|-feature-1
|-feature-2
|-v1 Release
| |-v1 hotfix1
| |-v1 hotfix2
|-v2 Release
|-v1 hotfix1
|-v1 hotfix2
我们有哪些选择?我能想到几个:
- 将一级分支转换为文件夹。这将允许我们嵌套分支,但我们将失去跟踪和可视化,这是我不喜欢的。
- 我们可以在依赖关系方面以某种方式重构我们的代码。但我想了一会儿,还是没有找到答案。
- 我们可以从代码依赖切换到二进制依赖,但这会减慢我们的开发速度。
有什么我想念的解决方案吗?
【问题讨论】:
标签: tfs branch dependency-management