使用TortoiseSVN进行分支和合并的最简单方法是什么?

时间:2009-09-22 18:50:27

标签: svn version-control tortoisesvn branch

使用TortoiseSVN进行分支和合并的“如何”非常简单?

1 个答案:

答案 0 :(得分:184)

假设您的工作目录正在使用主干:

右键单击“根工作文件夹”(此术语始终指Windows资源管理器)并执行svn update将工作文件夹更新为最新的主干文件夹。

确保你拥有的是稳定的。

右键单击根工作文件夹并执行svn commit以确保将任何本地更改提交到主干。

右键单击根工作文件夹并执行svn repo-browser

如果您的存储库中还没有分支文件夹:右键单击trunk文件夹上方的文件夹并执行“创建文件夹”并创建分支文件夹(例如,如果您的主干为{{1}创建http://myserver/svn/MyRepository/MyProj/Trunk)。

右键单击trunk文件夹并执行http://myserver/svn/MyRepository/MyProj/Branches并输入分支的新文件夹名称。例如:Copy To:。 (不要担心这会浪费很多空间......这被称为“便宜的副本”......它实际上不会复制文件的内容,除非它们发生变化)。

关闭Repo-browser。

右键单击您的工作文件夹根目录,然后执行:http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch并选择新分支的文件夹名称(例如,svn switch)。保留其他所有内容。

现在在你的分支上工作。当您进入里程碑时,右键单击根工作文件夹并执行http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch以提交到您的分支。 (这不会在后备箱中看到。)

如果其他人正在同一个分支上工作,请定期从根工作文件夹中执行svn commit。这将从分支更新。 (它不会从主干获得任何更新。)

无论其他人是否在同一个分支上工作,您应该定期合并来自主干的更改,以确保您的分支不会太难以在以后集成。要进行定期合并:右键单击工作文件夹根目录并执行svn update。选择“合并一系列修订”。在“要合并的URL”下,选择中继(例如,svn merge)。将版本范围留空并将其他所有内容保留。点击下一步。保留所有内容,然后单击合并。确保一切仍然有效......如果没有,请修复它。一旦您满意,从工作根文件夹中定期http://myserver/svn/MyRepository/MyProj/Trunk从分支更新(即使您是唯一一个在分支上工作的人,也必须这样做,以满足SVN)。然后执行svn update将合并后的主干更改提交到分支。您可以根据需要定期重复此步骤。

一旦您的分支准备好集成,请最后一次执行上述步骤并进行最终测试。最后提交分支。

右键单击根工作文件夹并执行另一个svn commit,这次切换到主干(例如,svn switch)。这将基本上“撤消”您在分支上完成的所有工作,但不要担心......您将恢复工作。 (它还会报告您在分支中未更改的文件的大量更新,但这些只是“SVN属性”更改...不要担心它们。)

右键单击您的工作文件夹并执行http://myserver/svn/MyRepository/MyProj/Trunk。这一次,选择“重新整合分支”。对于URL,请放入您的分支(例如,svn merge)。其余部分单击并单击“下一步”。保留所有内容,然后单击合并。您现在拥有了在分支机构完成的所有工作,以及从主干中获得的最新工作。

做最后的测试。一切都应该工作,因为这应该是你在分支的最后一次测试中所拥有的同一组文件。右键单击根工作文件夹并执行http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch。提交所有内容,甚至是你在分支中没有工作的文件(它们只有“SVN属性”更改,但提交它们有助于SVN跟踪所有修订)。

主干现在拥有你所有的分支工作以及你在分支机构工作时在主干中完成的所有工作,这一切都有效。此外,SVN拥有所有文件的完整历史记录,甚至包括您在分支机构工作时签入的修订版。

可选:进入Repo-browser,右键单击您的分支文件夹(例如svn commit)并执行“删除”。这对主干没有影响,你不再需要分支了。 (即使你真的很偏执,也不用担心,因为如果你真的需要的话,你甚至可以随时从Repo浏览器中取回已删除的分支。)

请随时发表评论!