Joe*_*Fan 79 svn version-control tortoisesvn branch
什么是使用TortoiseSVN进行分支和合并的"如何"非常简单?
Joe*_*Fan 184
假设您的工作目录正在从主干工作:
右键单击"根工作文件夹"(此术语始终指Windows资源管理器)并执行svn update将工作文件夹更新到最新的主干.
确保你拥有的是稳定的.
右键单击根工作文件夹,并svn commit确保将任何本地更改提交到主干.
右键单击根工作文件夹并执行svn repo-browser.
如果您在存储库中还没有分支文件夹:右键单击trunk文件夹上方的文件夹,然后执行"创建文件夹"并创建分支文件夹(例如,如果您的主干是http://myserver/svn/MyRepository/MyProj/Trunk,则创建http://myserver/svn/MyRepository/MyProj/Branches).
右键单击trunk文件夹并执行Copy To:并输入分支的新文件夹名称.例如:http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch.(不要担心这会浪费很多空间......这被称为"便宜的副本"......它实际上并不复制文件的内容,除非它们改变).
关闭Repo浏览器.
右键单击工作文件夹根目录,然后执行以下操作:svn switch并选择新分支的文件夹名称(例如,http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch).将其他所有内容保留为默认值.
现在在你的分支上工作.当您进入里程碑时,右键单击根工作文件夹并执行svn commit提交到您的分支.(这不会在后备箱中看到).
如果其他人正在同一分支上工作,请定期svn update从根工作文件夹中进行操作.这将从分支更新.(它不会从主干获得任何更新.)
无论其他人是否在同一个分支上工作,您应该定期合并来自主干的更改,以确保您的分支不会太难以在以后集成.要进行定期合并:右键单击工作文件夹根目录并执行svn merge.选择"合并一系列修订".在"要合并的URL"下,选择主干(例如,http://myserver/svn/MyRepository/MyProj/Trunk).将修订范围留空并将其他所有内容保留.点击下一步.保持一切,单击合并.确保一切仍然有效...如果没有,请修复它.一旦您满意,svn update从工作根文件夹中定期执行以从分支更新(即使您是唯一一个在分支上工作的人,这也是必要的,以满足SVN).然后执行svn commit将合并的主干更改提交到分支.您可以根据需要定期重复此步骤.
一旦您的分支准备好集成,最后一次执行上述步骤并进行最终测试.对分支做最后的提交.
右键单击根工作文件夹并执行另一个svn switch,这次切换到主干(例如,http://myserver/svn/MyRepository/MyProj/Trunk).这将基本上"撤消"您在分支上完成的所有工作,但不要担心......您将恢复工作.(它还会报告您在分支中未更改的文件的大量更新,但这些只是"SVN属性"更改...不要担心它们.)
右键单击您的工作文件夹即可svn merge.这一次,选择"重新整合分支".对于URL,放入分支(例如http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch).其余部分单击并单击"下一步".保持一切,单击合并.您现在拥有了在分支机构中完成的所有工作,以及从主干中获得的最新工作.
做最后的测试.一切都应该工作,因为这应该是你在分支的最后一次测试中所拥有的同一组文件.右键单击根工作文件夹并执行操作svn commit.提交所有内容,甚至是你在分支中没有工作的文件(它们只有"SVN属性"更改,但提交它们有助于SVN跟踪所有修订).
现在,主干现在拥有你所有的分支机构以及在你的分支机构工作时在主干中完成的所有工作,这一切都有效.此外,SVN具有所有文件的完整历史记录,甚至是您在分支机构工作时检查的修订版本.
可选:进入Repo-browser,右键单击您的分支文件夹(例如http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch),然后执行"删除".这对主干没有影响,你不再需要分支了.(即使你真的很偏执,也不要担心,因为如果你真的需要的话,你甚至可以随时从Repo浏览器中取回已删除的分支.)
请随意发表评论!