version-control - 如何分支单个类库以进行较小的更改(从2.0到2.1)而不分支整个解决方案

标签 version-control tfs branching-and-merging



问题在解决方案下方。考虑到Scott Bruns提出按版本进行分支可能是我们的问题,我决定通读Team Foundation Server 2010文档以及Microsoft模式和实践。使用的资源如下:

第5章-定义分支和合并策略
http://msdn.microsoft.com/en-us/library/bb668955.aspx



我选择利用以下结构。

TeamCollection
    TeamProject
        Development
            Feature A
            Feature B
        Main
            TeamApplication
                Code
                    Project1
                    Project2
                    Project3
                    MyClassLibrary
                Documents
        Releases
            1.0
            2.0
            2.1


对此的理解非常简单。主要代码库位于Main中,并且包含完整的代码库,但不包含多个副本或多个版本。此外,如果需要开发功能部件,则可以将一个项目分支到Development分支中,而不是分支整个解决方案。结果是更改将被合并回主存储库。这样可以提供隔离,以便在开发功能时不会破坏主代码库。

因此,这解决了我维护不同版本的问题,即当发布新版本时,这就是将解决方案整体分支到“发行版”中的情况。因此,实质上,发行版包含每个发行版的源代码的完整副本,这很有意义。因此,可以为特定版本提供修补程序,错误和维护,并在修复和更改稳定后将其合并回Main存储库。

因此,最后,Main代码库基本上始终是该软件的最新稳定版本,而开发则将功能和未经测试的代码隔离开来,而发布则将您的版本隔离开来并允许发布后维护。

导致解决方案的问题的另一部分是认为我们需要针对不是“修复”的任何类型的更改进行分支。了解您仅应在绝对必要时分支,我们现在将对现有代码库进行修复,更改等,然后进行合并,而不是创建整个新分支。

我希望我能解释得很好。我仍然对Team Foundation Server 2010有所了解,并且学习得很好。通过彻底阅读MSDN文档,模式和实践等,可以获得很多答案。一开始它有些难以理解,但最终您会流行起来。

希望这对遇到类似情况的人有所帮助。对于分支功能的好方法,无论是main的整个代码库还是仅是单个项目,我仍然不满意。就像只需要添加WinForm的新部分一样,它应该能够分支表单文件,但是如果没有项目,您就没有设计师,所以像这样的小事情似乎是一个问题。



我在此处针对分支结构和策略在SO上的版本控制分支上进行了一些搜索,但是这些问题或答案都不适合我的特定情况,因此我们继续。

我的源代码控制结构如下:

TeamCollection
    TeamProject
        Code
            1.0
                Project1
                Project2
                Project3
                MyClassLibrary
            1.1
                Project1
                Project2
                Project3
                MyClassLibrary
            2.0
                Project1
                Project2
                Project3
                MyClassLibrary
            ...


我用于分支的通常方法是仅分支整个版本目录。假设我要从2.0版开始做一个新功能,我会将整个2.0文件夹分支到2.1。

我现在用这种方法遇到的问题是,该项目的大小为444mb,因此,按照我目前的分支方式,每个版本的分支为444mb,并占用了大量磁盘空间。另一个问题是不必创建所有不需要更改的文件的副本。

在项目中,我有一个类库,我想从2.0分支到2.1。我只需要对库进行少量更改,但想将此更改与2.0代码库分开。我遇到的问题是了解如何继续进行分支。

如果我分支如下:

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.1版,而不更改2.0版中的引用。同样,2.1应该是独立于2.0的版本。

我唯一的解决方案是仅对整个项目进行分支,但是由于项目规模越来越大,因此不需要全部444mb分支,因此我试图为此寻求专业帮助。

我想使用建议的第一个选项安装2.1 / MyClassLibrary,但我确实需要帮助来了解如何仅使用2.1目录中的单个项目来创建整个产品的内部版本。

最佳答案

按版本分支可能是您的基本问题。

为什么需要在不同文件夹中处理不同版本的应用程序?您是否真的需要同时处理多个版本的代码?

在我们的环境中,我只会将2.0版(或2.1版等)放入相同的文件夹结构中(当然不是在同一时间)。我不需要额外的444mb磁盘空间。

当然,您的环境/分支选择可能会非常不同。

关于version-control - 如何分支单个类库以进行较小的更改(从2.0到2.1)而不分支整个解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286391/

相关文章:

git - 使用 develop 分支 Git 流程开发模型应用修补程序时,如何避免 Git 中的重复提交?

git: merge 分支并使用有意义的 merge 提交消息?

linux - cvs 在单个命令中提交和添加文件

svn - 源代码控制 : Multiple repositories for the same project

javascript - 如何在 JavaScript 中获取 TFS 工作项跟踪控件中的当前授权用户?

tfs - 如何从另一个 TFS 构建调用一个 TFS 构建?

git - 是否可以从 Github 网站或 API 获取 merge 到分支的列表?

git - 可以告诉 git 存储库使用工作副本作为基础数据吗?

version-control - 如何在颠覆中将应用程序的免费/付费版本分开

.net - 我需要安装什么才能获得 Microsoft.TeamFoundation.WorkItemTracking.Client.dll?