使用TortoiseSVN进行分支和合并的真正简单的“方法”是什么?
Answers:
假设您的工作目录正在中继中工作:
右键单击“根工作文件夹”(此术语始终指Windows资源管理器),然后svn update
将您的工作文件夹更新为最新的主干。
确保您拥有的是稳定的。
右键单击根工作文件夹,并svn commit
确保将所有本地更改都提交给了中继。
右键单击根工作文件夹并执行svn repo-browser
。
如果存储库中没有分支文件夹,请执行以下操作:右键单击中继文件夹上方的文件夹,然后执行“创建文件夹”并创建一个分支文件夹(例如,如果您的中继为http://myserver/svn/MyRepository/MyProj/Trunk
,则创建http://myserver/svn/MyRepository/MyProj/Branches
)。
右键单击主干文件夹,Copy To:
然后为分支添加新的文件夹名称。例如:http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
。(不必担心这会浪费很多空间...这被称为“便宜的副本” ...它实际上不会复制文件的内容,除非它们发生更改)。
关闭回购浏览器。
右键单击您的工作文件夹根目录,然后执行以下操作:svn switch
并选择新分支的文件夹名称(例如http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
)。将其他所有内容保留为默认值。
现在在您的分支机构上工作。当您到达里程碑时,右键单击根工作文件夹并执行svn commit
以提交到分支。(这不会在行李箱中看到)。
如果其他人在同一分支上工作,请定期svn update
从根工作文件夹中进行。这将从分支更新。(它将不会从中继获得任何更新。)
不管其他人是否在同一分支上工作,您都应定期合并主干中的更改,以确保以后合并起来不会太困难。要进行定期合并:在工作文件夹根目录上单击鼠标右键,然后执行do 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浏览器,右键单击您的分支文件夹(例如http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch
),然后执行“删除”。这将对主干没有影响,并且您不再需要分支。(即使您确实是偏执狂,也不必担心,因为如果您确实需要,甚至可以随时从Repo浏览器找回已删除的分支。)
请随意发表评论!