对文件夹和文件进行分支
可以使用分支来实现以下目标:
管理多个团队对相同的基本代码所做的并发工作
确定基本代码的不同变更集所引入的风险
拍摄快照,然后支持后来所确定的更改(例如,为了创建发布分支)
例如,下图演示 DinnerNow 公司如何发展分支结构来满足其业务需求。
“层次结构”窗口中的 DinnerNow 分支结构
功能团队 A 和功能团队 B 分别在单独的分支中进行各自的工作。 当团队准备合并其工作时,他们会将其分支合并到 Dev 分支中。 当 Dev 分支的生成处于稳定状态并且准备就绪可以进行测试时,团队会将 Dev 分支合并到 Test 分支中。
发布每个版本时,Main 分支将分成新的版本分支(如 Version1 分支和 Version2 分支)。 通过执行此策略,公司可以在需要时单独增强或修复过去的每个产品版本。
您可以使用**“源代码管理资源管理器”**来执行分支操作(如本主题所演示),也可以在命令提示符处使用 Branch 命令来执行分支操作。 有关更多信息,请参见 Branch Command。
提示
分支是一种用于创建并行文件版本集的功能强大的重要方法。但是,使用分支可能会增加项目的复杂性和成本。例如,在合并两个分支时,您可能必须解决冲突。
在创建分支之前,您应该考虑是否可以通过应用标签来更好地满足需求。通过应用标签,您可以轻松地快速拍摄文件状态快照,以便以后可以重新获得或生成该状态的文件。有关更多信息,请参见使用标签获取文件快照。
将文件夹转换为分支
Visual Studio Team Foundation Server 2010 版开始区分分支与文件夹。 下图演示 DinnerNow 文件夹结构的顶层:
源代码管理资源管理器中的 DinnerNow 文件夹结构
如图所示,您仍然可以使用文件夹在团队项目的版本控制层次结构中组织分支。 但是,文件夹和分支具有不同的外观和功能。 当您右击文件夹或分支并单击**“属性”**时,将显示不同的信息和功能。
当您执行分支操作时,分支具有胜过文件夹的重要优势。 分支支持版本控制功能,通过使用这些功能,您可以另外查看分支结构以及变更集的合并位置。 (有关更多信息,请参见本主题后面“另请参见”一节中的链接。)
虽然仍可以对文件夹进行分支和合并,但团队最好仅对分支进行这些操作。 以下过程介绍如何将文件夹转换为分支。
必需的权限
若要执行以下过程,您的**“管理分支”权限必须设置为“允许”**。 有关更多信息,请参见Team Foundation Server 权限。
将文件夹转换为分支
在**“源代码管理资源管理器”**中,确保服务器中存在您要转换的文件夹。
如果该文件夹旁显示有挂起的添加图标 (),请右击该文件夹,然后单击**“签入挂起的更改”**。
右击要转换的文件夹,指向**“分支和合并”,然后单击“转换为分支”**。
此时将出现**“将文件夹转换为分支”**对话框。
重要 如果要转换已经进行了分支的文件夹,则或许应该选中**“以递归方式对所有已分支子文件夹执行此转换”**复选框。 此选项还会将已从这一个文件夹中分支的所有文件夹转换为分支。
(可选)在**“所有者”**字段中,键入此分支的所有者的姓名。
备注
“所有者”字段仅供参考。在“所有者”字段中被指定并不表示会授予附加权限。
(可选)在**“说明”**字段中,键入您认为将对必须使用此分支或了解其用途的其他团队成员有帮助的信息。
单击**“转换”**。
重要
您无法嵌套分支;因此,如果任何文件夹包含分支或被分支所包含,则无法将该文件夹转换为分支。例如,下图所演示的情况表明不能将 FeatureTeamA 分支的父级或子级转换为分支。
将文件夹转换为分支后,如果您的团队决定更改分支的结构,您可将分支转换回文件夹。
将分支转换为文件夹
在**“源代码管理资源管理器”**中,单击要转换的分支。
在**“文件”菜单上,指向“源代码管理”,指向“分支和合并”,然后单击“转换为文件夹”**。
出现**“将分支转换回文件夹”消息后,请单击“是”**。
对分支进行分支
将文件夹转换为分支后,则可以从该分支中创建其他分支。 以下过程演示如何使用 Visual Studio Application Lifecycle Management (ALM) 的图形用户界面对分支进行分支。 (有关如何从命令提示符执行此任务的信息,请参见 Branch Command。)
必需的权限
若要执行此过程,则对源和目标分支路径的**“管理分支”权限必须设置为“允许”。 对目标分支路径的“合并”权限必须设置为“允许”**。 有关更多信息,请参见Team Foundation Server 权限。
对分支进行分支
在**“源代码管理资源管理器”中,右击要进行分支的分支,指向“分支和合并”,再单击“分支”**。
此时将出现**“分支起源”**对话框。
在**“目标分支名称”**框中,指定新分支的路径。
(可选)在**“分支起源版本”部分的“依据”**列表中,单击下列选项之一:
如果单击**“最新版本”**,则将在版本控制中为最新版本创建分支。
如果单击**“变更集”,则可以在“变更集”框中指定变更集的编号。 或者,单击省略号(...)打开“查找变更集”**对话框。
有关更多信息,请参见 查找和查看变更集。
如果单击**“日期”,则可以在“日期”**框中指定日期。
单击**“分支”**。
分支会创建并出现在**“源代码管理资源管理器”**中。
注意 与大多数版本控制操作不同,此操作不会生成挂起的更改。 相反,此操作将立即完成,并且您不能撤消此操作。
对文件夹或文件进行分支
重要
在大多数情况下,本节中所记录的过程并不是最佳做法。
虽然您可以直接在 Visual Studio ALM 中对文件夹或文件进行分支,但是,对于大多数场合,这种操作通常并不是最佳方法。 团队最好是仅对分支进行分支和合并,如本主题前面所述。
但是,如果您特别需要对文件夹或文件进行分支,则可以按照以下过程使用 Visual Studio ALM 执行此任务。 (有关如何从命令提示符执行此任务的信息,请参见 Branch Command。)
必需的权限
若要执行此过程,则对目标路径的**“签出”权限和“合并”权限必须设置为“允许”**。 有关更多信息,请参见Team Foundation Server 权限。
对文件夹或文件进行分支
在**“源代码管理资源管理器”中,右击要分支的文件夹或文件,指向“分支和合并”,然后单击“分支”**。
此时将出现**“分支”**对话框。
在**“目标”**框中,修改新分支的位置和名称。
也可以单击**“浏览”**指定目标。
在**“分支起源版本”部分的“依据”**列表中,单击下列选项之一:
如果单击**“最新版本”**,则将在版本控制中为最新版本创建分支。
如果单击**“变更集”,则可以在“变更集”框中指定变更集的编号。 或者,可以单击省略号(...)打开“查找变更集”**对话框。
有关更多信息,请参见 查找和查看变更集。
如果单击**“日期”,则可以在“日期”**框中指定日期。
如果单击**“标签”,可以在“标签”框中键入标签名称。 或者,可以单击省略号(...)打开“查找标签”**对话框。
有关更多信息,请参见使用标签获取文件快照。
如果单击**“工作区版本”**,将为工作区中的版本创建分支。
(可选)选中**“创建新分支的本地工作副本”**复选框,在本地工作区创建版本控制项的副本。 如果不需要本地副本,并且希望通过避免将许多项下载到您的计算机上来提高性能,请清除该复选框。
单击**“确定”**。
分支会创建并出现在**“源代码管理资源管理器”**中。
备注
如果选中了“创建新分支的本地工作副本”复选框,并且在当前工作区中未映射您指定的本地文件夹,则将出现“浏览文件夹”窗口。浏览文件夹,或者单击“新建文件夹”,指定要与受版本控制的项同步的文件夹,然后单击“确定”。