在TFS2013 / TFVC中为现有团队项目创建新的发布分支

时间:2015-07-06 01:12:56

标签: visual-studio-2013 version-control tfs tfs2013 branching-and-merging

**虽然另一个提议的重复问题与我的情景有很大不同,但这个问题被低估并被确认为重复。该问题是关于如何合并已经存在的分支的问题。我的问题是如何正确/理想地更改项目结构/为没有分支的现有项目添加分支。我甚至将另一个与我完全相同的问题联系起来,除了我还有其他一些问题没有在那个问题上得到解答。

这可能是非常基本的,但我有一段时间试图找出为TFS2013中从未使用过分支的现有项目添加分支的推荐方法。 This帖子是同一个问题(针对TFS2010),但答案还有一些问题。

我的具体情况是,我有一个从未有分支的旧项目,并且没有设置分支。从我所读到的内容看来,好像从/ main / dev和/ releaseX / releaseY文件夹开始,并将它们全部转换为分支,这是推荐的方法,但是很久以前这艘船已经航行了。我工作的公司需要能够为拥有许多不同版本的客户维护修补程序的发布分支。

一个建议是简单地将顶级团队项目本身转换为分支并将其视为主要分支。这似乎很好,但我也读过你不能在分支内创建任何分支,那么我将如何/在哪里创建发布分支?

当前结构如下所示,发布文件夹就是我的想法:

  • server \ default collection
    • 团队项目
      • ...所有项目的文件和文件夹
      • ReleaseBranches
        • 第1版
        • 第2版

那么,我是否必须创建一个" Main"文件夹,将所有项目的文件和文件夹移动到该文件和文件夹中,将其转换为分支,然后在该级别设置发布分支?或者有没有办法将根文件夹转换为分支并在其下面有发布分支?或者我是否必须为每个分支创建一个单独的项目?或者,是否有可能没有主分支,只是为发布创建分支(我认识到这可能不是最好的 - 它会使合并变得更加困难)?

这是一个非常小的团队,我希望尽可能简化更改,并让团队尽可能轻松地将主要错误修复程序合并到旧版本中。另外一个想法是,这可能会影响我建立的CI构建。如果分支存在于与主代码混合的项目集合下,那么检入发布分支会触发CI构建吗?

2 个答案:

答案 0 :(得分:2)

如果我根据情况设置分支......

  

那么,我是否必须创建一个" Main"文件夹,移动所有项目的文件   和文件夹,将其转换为分支,然后设置发布   在那个级别的分支?

是的,这可能是最好的开始。

  

或者有没有办法将根文件夹转换为分支并拥有   它下面的发布分支?

我认为你不能创建团队项目到分支机构,如果可以的话,你不会想要你的版本。

  

或者我是否必须为每个分支创建一个单独的项目?或者,是吗?   可能没有主分支,只是创建分支   发布(我认识到这可能不是最好的 - 它会合并   更难)?

你是如何创建这些"发布分支的?#34;?你分支文件夹了吗?

这会让你的结构像这样:

Team Project
 >Main
 >Release Branches
  >Rel1
  >Rel2

根据您现在维护发布分支的方式,我将原样保留,并保持"合并"像你一样改变它们。如果你真的想要,你可以尝试重新创建一次" Main"通过使用TFVC中的Changeset选项的分支来存在分支。

展望未来,您可以在发货时从Main分发每个Release。如果您需要进行一些长期的破坏性工作,您还可以从Main创建功能分支。

答案 1 :(得分:2)

我仍然认为这是一个合理的问题,因为我也遇到了类似的问题。以下是我对我的测试项目" BranchTesting" (以及后来的生产项目)。关于它的重点是,它保留了所有文件的更改历史记录:

  1. 在您的计算机上创建当前版本源的备份文件夹。在以下步骤中,映射文件夹中的文件将完全擦除并覆盖您要写入Release分支的每个版本。
  2. 确保所有更改都已签入,并且您拥有更改集说明或标识最新版本的标签(例如"最新版本")。
  3. 创建3个文件夹" Main"," Dev"和"发布" (或者,如果您不想要Dev文件夹,则为主要和发布)。
  4. 在子文件夹版本中,为每个版本创建文件夹(例如1.0.0和1.0.1,或者您的版本管理工作正常)
  5. 右键单击团队项目并签入文件夹。
  6. 右键单击每个Release文件夹(不是root" Release",只是" 1.0.0"等) - >分支和合并 - >转换为分支
  7. 为分支添加说明,保留"递归地对先前从此文件夹分支的所有文件夹执行此转换"选中并点击"转换"。文件夹现在显示为分支。这不需要签到。
  8. 右键点击您的团队项目 - >高级 - >获取特定版本
  9. 搜索版本1.0.0的变更集或标签,并确保"覆盖未签出的可写文件"和"即使本地版本与指定的版本匹配,也覆盖所有文件"检查。这将删除您之前创建的磁盘上的所有文件夹!
  10. 右键点击"发布" root并获取最新版本。这会将文件夹和子文件夹下载到您的计算机。
  11. 在Windows资源管理器中,导航到项目文件夹并将所有下载的元素(通常是sln文件和包含源代码的文件夹)复制到子文件夹Release / 1.0.0
  12. 确保您看到Source Control Explorer(VS)和Windows资源管理器的分屏。现在通过拖放到源控制分支1.0.0
  13. 中移动以前复制的文件
  14. 右键单击分支并签入。将其标记为"将版本添加到版本1.0.0分支"。
  15. 对所有版本重复步骤8-13。
  16. 完成所有版本后,右键单击最新版本分支 - >分支和合并 - >合并
  17. 选择主分支并执行Baseless Merge。这可以保证您的主分支从发布中获取变更集历史记录。
  18. 可选,右键单击主分支 - >分支和合并 - >分支并选择您的Dev文件夹以创建Dev Branch
  19. 我进一步在Dev文件夹中创建了2个子文件夹来创建2个并行的Dev分支,但这取决于你。以下是它的最终结果: Project Structure

    以下是变更集历史记录: Changeset History 这里是程序文件的历史(来自测试程序): enter image description here

    编辑:我意识到imgur不会永远保留图像,因此这里有文字:

    Team Project
     > Dev
       > EligibilityEnhancement
         > BranchTesting
       > Ryan
         > BranchTesting
     > Main
       > BranchTesting
     > Release
       > 1.0.0
         > BranchTesting
       > 1.0.1
         > BranchTesting