对文件夹和文件进行分支

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

可以使用分支来实现以下目标:

  • 管理多个团队对相同代码库所做的并发工作。
  • 隔离代码库的不同变更集所引入的风险。
  • 获取快照,然后支持后来所隔离的更改(例如,为了创建发布分支)。

例如,下图演示了 DinnerNow 公司为满足其业务需求而开发的分支结构。

显示分支结构的关系图。

功能团队 A 和功能团队 B 分别在单独的分支中进行各自的工作。 当团队准备合并其工作时,他们会将其分支合并到 Dev 分支中。 当 Dev 分支的生成处于稳定状态并且准备就绪可以进行测试时,团队会将 Dev 分支合并到 Test 分支中。

发布每个版本时,Main 分支将分成新的版本分支(如 Version1 分支和 Version2 分支)。 通过执行此策略,公司可以在需要时单独增强或修复过去的每个产品版本。

可以使用 Visual Studio“源代码管理器”来执行分支操作(如本文所演示),也可以在命令提示符处使用 branch 命令来执行分支操作。 有关详细信息,请参阅 branch 命令

提示

分支是一种用于创建并行文件版本集的功能强大的重要方法。 但是,使用分支可能会增加项目的复杂性和成本。 例如,在合并两个分支时,您可能必须解决冲突。

在创建分支之前,你应该考虑是否可以通过应用标签来更好地满足需求。 通过应用标签,您可以轻松地快速拍摄文件状态快照,以便以后可以重新获得或生成该状态的文件。 有关详细信息,请参阅使用标签获取文件快照

先决条件

  • 若要将文件夹转换为分支,“管理分支”权限必须设置为“允许”。
  • 若要为分支创建分支,则对源和目标分支路径的“管理分支”权限必须设置为“允许”。 对目标分支路径的“合并”权限必须设置为“允许”。
  • 若要为文件夹或文件创建分支,则对目标路径的“签出”权限和“合并”权限必须设置为“允许”。

有关详细信息,请参阅默认 TFVC 权限

将文件夹转换为分支

分支不同于文件夹。 下图显示了 Visual Studio 源代码管理器中 DinnerNow 文件夹的大致结构。

显示源代码管理器中文件夹结构的示意图。

如图所示,你仍然可以使用文件夹在项目的版本控制层次结构中组织分支。 但是,文件夹和分支具有不同的外观和功能。 当你右键单击文件夹或分支并选择“高级”>“属性”时,将显示不同的信息和功能。

当您执行分支操作时,分支具有胜过文件夹的重要优势。 分支支持版本控制功能,通过使用这些功能,你可以另外查看分支结构以及变更集的合并位置。 虽然仍可以对文件夹进行分支和合并,但团队最好仅对分支进行这些操作。 以下过程介绍如何将文件夹转换为分支。

重要

确保要转换的文件夹存在于服务器上。 如果源代码管理器中该文件夹旁显示有处于挂起状态的添加图标 TFSC 处于挂起状态的添加图标,请右键单击该文件夹,然后选择“签入挂起的更改”。

  1. 在“源代码管理器”中,右键单击要转换的文件夹,然后选择“分支和合并”>“转换为分支”。

  2. 在“将文件夹转换为分支”对话框中:

    • 在“所有者”字段中,可选择输入此分支的所有者的姓名。 此字段仅供参考,不授予任何权限。
    • 在“说明”字段中,可选择键入信息以帮助其他团队成员使用此分支或了解其用途。
    • 如果要转换已创建了分支的文件夹,则选中“以递归方式对所有已分支子文件夹执行此转换”复选框。 此选项将从该文件夹创建分支的所有文件夹转换为分支。
  3. 选择“转换”

重要

不能嵌套分支。 因此,如果文件夹包含分支或属于分支,则无法将该文件夹转换为分支。 例如,下图显示了不能将 FeatureTeamA 分支的父级或子级转换为分支。

显示不允许嵌套分支的示意图。

将文件夹转换为分支后,如果团队决定更改分支结构,你可将分支转换回文件夹。

将分支转换为文件夹

  1. 在“源代码管理器”中,选择要转换的分支。
  2. 在 Visual Studio“文件”菜单上,选择“源代码管理”>“分支和合并”>“转换为文件夹”,然后选择“是”。

对分支进行分支

将文件夹转换为分支后,可以从该分支中创建其他分支。 以下过程演示如何使用 Visual Studio 为分支创建分支。 若要在命令提示符处执行此任务,请参阅 branch 命令

  1. 在“源代码管理器”中,右键单击要为其创建分支的分支,然后选择“分支和合并”>“分支”。

  2. 在“分支起源<分支名称>”对话框中的“分支起源版本”下,可以选择下拉并从“依据”列表中选择一个选项:

    • “最新版本”- 在版本控制中为最新版本创建分支。
    • “更改集”- 可在“变更集”框中输入变更集的编号,或选择省略号“…”以打开“查找变更集”对话框。 有关详细信息,请参阅查找和查看变更集
    • “日期”- 可在“日期”框中输入或选择日期。
    • “标签”- 可输入或查找标签。 有关详细信息,请参阅使用标签获取文件快照
    • “工作区版本”- 为不同工作区中的版本创建分支。
  3. 在“目标分支名称”下,指定/浏览到并选择新分支的路径。

  4. 选择“分支”。 分支会创建并出现在“源代码管理器”中。

注意

与大多数版本控制操作不同,此操作不会生成挂起的更改。 相反,此操作将立即完成,并且不能撤消此操作。

对文件夹或文件进行分支

虽然可以直接为文件夹或文件创建分支,但建议不要这样操作。 如果直接为文件或文件夹创建分支,则无法查看分支层次结构跟踪更改集。 最佳做法是按照本文前面介绍的内容只对分支进行创建分支和合并。

但是,如果有特殊需求需要为文件夹或文件创建分支,则可使用以下过程。 若要在命令提示符处执行此任务,请参阅 branch 命令

  1. 在“源代码管理器”中,右键单击要为其创建分支的文件夹或文件,然后选择“分支和合并”>“分支”。

  2. 在“分支”对话框的“目标”框下,修改新分支的位置和名称,或选择“浏览”以浏览并选择文件。

  3. 在“分支起源版本”下,可以选择下拉并从“依据”列表中选择一个选项:

    • “最新版本”- 在版本控制中为最新版本创建分支。
    • “更改集”- 可在“变更集”框中输入变更集的编号,或选择省略号“…”以打开“查找变更集”对话框。 有关详细信息,请参阅查找和查看变更集
    • “日期”- 可在“日期”框中输入或选择日期。
    • “标签”- 可输入或查找标签。 有关详细信息,请参阅使用标签获取文件快照
    • “工作区版本”- 为不同工作区中的版本创建分支。
  4. (可选)选中“将目标项下载到工作区”,在本地工作区创建版本控制项的副本。 如果不需要本地副本,并且希望通过避免将许多项下载到计算机上来提高性能,请清除该复选框。

  5. 选择“确定” 。 分支会创建并出现在“源代码管理器”中。

    注意

    如果选中“将目标项下载到工作区”,并且在当前工作区中未映射指定的本地文件夹,则将出现“浏览文件夹”窗口。 浏览文件夹,或选择“新建文件夹”,指定要与版本控制项同步的文件夹,然后选择“确定”。