Version control 如何在不分支整个解决方案的情况下,为微小更改(2.0到2.1)分支单个类库
解决方案 问题在解决方案下面。离开Scott Bruns建议的版本分支可能是我们的问题,我决定彻底阅读Team Foundation Server 2010文档,以及微软模式和实践。使用的资源如下:Version control 如何在不分支整个解决方案的情况下,为微小更改(2.0到2.1)分支单个类库,version-control,tfs,branching-and-merging,Version Control,Tfs,Branching And Merging,解决方案 问题在解决方案下面。离开Scott Bruns建议的版本分支可能是我们的问题,我决定彻底阅读Team Foundation Server 2010文档,以及微软模式和实践。使用的资源如下: TeamCollection TeamProject Code 1.0 Project1 Project2 Project3
TeamCollection
TeamProject
Code
1.0
Project1
Project2
Project3
MyClassLibrary
1.1
Project1
Project2
Project3
MyClassLibrary
2.0
Project1
Project2
Project3
MyClassLibrary
...
TeamCollection
TeamProject
Code
2.0
Project1
Project2
Project3
MyClassLibrary
2.1
MyClassLibrary
第5章-定义分支和合并策略
我选择使用以下结构
TeamCollection
TeamProject
Development
Feature A
Feature B
Main
TeamApplication
Code
Project1
Project2
Project3
MyClassLibrary
Documents
Releases
1.0
2.0
2.1
对此的理解相当简单。主代码库位于main中,包含整个代码库,但不包含多个副本或多个版本。此外,如果功能需要开发,可以将单个项目分支到开发分支中,而不是将整个解决方案分支。结果是更改将合并回主存储库。这提供了隔离,以便在开发特性时不会破坏主代码库
因此,这如何解决我维护不同构建的问题,就是当发布一个新构建时,整个解决方案将分支到发布中。因此,从本质上讲,每个版本都包含源代码的完整副本,这是有意义的。因此,可以为特定版本提供修补程序、bug和维护,并在修补程序和更改稳定后将其合并回主存储库
因此,最终,主代码库基本上总是软件的最新稳定版本,而开发隔离了功能和未经测试的代码,发布隔离了您的版本并允许发布后维护
导致解决方案的问题的另一部分是,我们需要为任何类型的不是“修复”的更改进行分支。了解到只有在绝对必要时才应该进行分支,我们现在将对现有代码库应用修复、更改等,并进行合并,而不是创建整个新分支
我希望我能解释清楚。我仍然感受到Team Foundation Server 2010并学习这一点。通过全面阅读MSDN文档、模式和实践等,可以获得很多答案。有些事情一开始有点难以理解,但最终你会理解的
希望这能帮助任何有类似情况的人。我仍然粗略地介绍了一种分支特性的好方法,不管main中的整个代码库应该是分支的还是单个项目。比如说,如果只需要添加WinForm的一个新部分,就应该能够只分支表单文件,但是没有项目,就没有设计器,所以像这样的小事情似乎是个问题
问题
我在这里对版本控制分支做了一些搜索,关于分支结构和策略,但这些问题或答案都不符合我的具体场景,所以我们开始
我的源代码管理结构如下:
TeamCollection
TeamProject
Code
1.0
Project1
Project2
Project3
MyClassLibrary
1.1
Project1
Project2
Project3
MyClassLibrary
2.0
Project1
Project2
Project3
MyClassLibrary
...
TeamCollection
TeamProject
Code
2.0
Project1
Project2
Project3
MyClassLibrary
2.1
MyClassLibrary
我用于分支的常用方法是只分支整个版本目录。假设我想从版本2.0中创建一个新功能,我会将整个2.0文件夹分支到2.1
我现在用这种方法遇到的问题是,这个项目的大小是444mb,所以用我目前的分支方法,每个版本都是444mb,并且占用了大量的磁盘空间。另一个问题是,不必为所有不需要更改的文件创建副本
在这个项目中,我有一个类库,我想从2.0分支到2.1。我只需要对库做一个小的更改,但希望将此更改与2.0代码库分开。我现在面临的问题是理解我应该如何着手处理这个分支
如果我的分支机构如下:
TeamCollection
TeamProject
Code
1.0
Project1
Project2
Project3
MyClassLibrary
1.1
Project1
Project2
Project3
MyClassLibrary
2.0
Project1
Project2
Project3
MyClassLibrary
...
TeamCollection
TeamProject
Code
2.0
Project1
Project2
Project3
MyClassLibrary
2.1
MyClassLibrary
我试图理解如何构建整个产品的发布版,但如果类库与其他项目隔离,则包括类库的2.1版。我不一定希望将2.0代码库更改为引用2.1类库,因为2.1不应该是2.0的一部分
我的另一个想法是:
TeamCollection
TeamProject
Code
2.0
Project1
Project2
Project3
MyClassLibrary
MyClassLibrary-2.1 (following the default suggestion of TFS Explorer)
这在某种程度上是有意义的,因为2.1分支是代码库2.0的一个子集,因为这是一个较小的功能更改,但这也为大型项目创建了一个极其混乱的文件系统层次结构,而且,我正在尝试理解如何在不更改版本2.0中的引用的情况下构建整个项目的版本2.1。同样,2.1应该是2.0的独立版本
我唯一的解决方案是再次分支整个项目,但我正试图为此寻求专业帮助,因为该项目的规模越来越大,分支所有444mb应该是不必要的
我想使用我建议的第一个选项,在我有2.1/MyClassLibrary的地方,但我真的需要帮助理解如何在2.1目录中仅使用单个项目创建整个产品的构建。按版本分支可能是您的基本问题 为什么要求您在不同文件夹中使用不同版本的应用程序?您真的需要同时处理多个版本的代码吗 在我们的环境中,我只需要将版本2.0(或2.1等)放入相同的文件夹结构中(当然不是同时)。我不需要额外的444mb磁盘空间
当然,你的环境/分支选择可能会有很大的不同。因为Team Foundation Server确实跟踪服务器上的本地状态,所以你可以用它来做一些很酷的把戏。使用广告不佳的
/remap
标记到tf get
将允许您切换到其他分支,并仅下载差异
例如,假设您在2.0版中工作,并且已将$/TeamProject/code/2.0
映射到C:\Work\code>