SVN8.COM - SVN中文技术网

投递文章 投稿指南 SVN中文技术网公告:技术交流诚聘优秀版主最新公告
搜索: 您的位置主页>SVN使用>TortoiseSVN日常使用指南

TortoiseSVN日常使用指南

SVN技术网 www.svn8.com 2008-03-18 10:37:20   来源:   作者:  评论:0 点击:

版本库中的最新版本

新分支直接从仓库中的最新版本里拷贝出来。不需要从你的工作副本中传输任何数据,这个分支的建立是非常快的。

在版本库中指定具体的版本

在仓库中直接拷贝建立一个新分支同时你也可以选择一个旧版本。假如在你上周发布了项目时忘记了做标记,这将非常有用。如果你记不起来版本号,通过点击鼠标右键来显示版本日志,同时从这里选取版本号。和上次一样不需要从你的工作副本中传输任何数据,这个分支建立起来是非常快的。

工作副本

新的分支是一个完全等同于你的本地工作副本的一个拷贝。如果你更新了一些文件到你的工作副本的某个旧版本里,或者你在本地做出了修改,这些改变将准确无误的进入拷贝中。自然而然地这种综合的标记会包含正在从工作副本传输到版本库的数据,如果这些数据还不存在的话。

如果你想把你的工作副本自动切换到最新创建的分支,使用转换工作拷贝至新分支/标记 选择框.但是如果你打算这么做,首先要确认你的工作副本没有被修改。如果有修改的话,当你转换后这些修改将会混合进你的工作副本分支里。

按下确认提交新副本到版本库中。别忘了提供一条日志信息。需要注意的是这个副本是在版本库内部创建的。

需要注意建立一个分支或标记不会影响你的工作副本。即使你拷贝了你的工作副本,这些修改也会提交到新分支里,而不是到主干里,所以你的工作拷贝可能仍然标记为已修改状态。

5.16.2. 检出或者切换

...这是个小问题。当你想从预期的分支检出所有数据到你的工作副本目录时TortoiseSVN切换... 仅仅传输已经被修改的数据到你的工作副本中。这样能减轻你的网络负担,也能减少你的耐心。

为了能够使用你最新产生的副本你有采用下面几种方法。你可以:

  • TortoiseSVN检出一个最新的项目在一个空目录下。你可以在你的本地磁盘上的任意位置进行检出操作,同时你可以从版本库中按照你的意愿建立出任意数量的副本。

  • 在版本库中从你当前的工作副本切换到最新建立的副本。再一次选择你的项目所处的顶级文件夹然后在菜单中使用TortoiseSVN切换...

    在接下来的对话框中蠕蠕你刚才建立的分支的URL。选择最新版本单选按钮然后确认。你的工作副本就切换到了最新的分支/标记。

    切换操作起来就象更新,因为它没有丢弃你在本地做的修改。在工作副本里当你进行切换的时候任何没有提交过的修改都会被混合。如果你不想看到这样的结果,那么你可以有两种选择,要么在切换前提交修改,要么把工作副本恢复到一个已经提交过的版本(比如最新版本)。

图 5.30. 切换对话框

切换对话框

尽管Subversion本身不区分标记和分支,它们的使用方法还是有些不同。

  • 在某个特殊的阶段标记被用来建立一个项目的静态映像。同样地标记和分支应该被独特地应用于开发品。这就是我们首选推荐 /trunk /branches /tags这样的版本库结构的原因。使用标记的版本并不是一个好想法,因为你的本地文件没有写保护,你这样做容易犯错误。不管怎样如果你试着提交(修改)到一个包含/标记/的版本库路径下,TortoiseSVN 会给你警告。

  • 如果你想要在一个已经标记的发布版上做更多的修改。正确的操作方法是先从标记处建立一个新分支然后提交这个分支。在这个分支的基础上进行修改后再从这个新分支上建立一个新标记,例如 Version_1.0.1

  • 如果你修改了一个从分支建立的工作副本然后又提交了这个副本,那么所有的修改会转到一个新分支里而不是 主干。仅仅是存储了修改的数据。其余的数据还是便宜拷贝。

  • 5.17. 正在合并

    分支用来维护独立的开发支线,在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支。

    在你开始使用之前,请先理解分支与合并是怎么工作的,因为它很复杂。强烈建议你阅读Subversion Book分支与合并章节,它给出了全面的描述,和许多使用举例。

    十分关键之处是Subversion的合并与差异关系很密切。合并工作的基础是在版本库对两个分支产生一个差异列表,然后对你的工作副本应用这些差异。举例说明,如果你需要合并版本N的修改,那么你要与版本N-1比较。新手经常问“为什么我需要从开始版本减一”。考虑底层的差异处理,这个问题就会清楚了。为了容易操作,当你使用显示日志选择一个版本范围合并的时候,TortoiseSVN 自动为你做这个调整。

    通常来说,在没有修改的工作副本上执行合并是一个好想法。如果你在工作副本上做了修改,请先提交。如果合并没有按照你的想法执行,你可能需要撤销这些修改,命令恢复 会丢弃包含你执行合并之前的所有修改。

    这里有两个处理稍微不同的用例,如下所述。

    5.17.1. 合并指定版本范围

    这个方法覆盖了你已经在分支(或者最新版本)上做出了一个或多个修改,并且你想将这些修改应用到不同分支的情况。

    图 5.31. 合并对话框

    合并对话框

    为了合并版本,你需要进入接收修改的分支的工作副本,经常是trunk。选择右键菜单TortoiseSVN合并...

    1. 从:域输入文件夹在分支或标记中的完整URL,它包含了你想应用到工作副本的修改。你也可以点击...浏览版本库,找到渴望的分支。如果你以前已经从这个分支合并过,可以直接从包含历史的下拉列表选择以前使用的URL。

    2. 因为你要将同一分支的版本范围合并到工作副本,所以要确保使用 "从:" URL 检查框选中。

    3. 从版本域输入开始版本号。它是在你要执行合并的修改之前的版本号。切记为了合并,Subversion将会创建一个差异,所以开始点务必准确。 例如,你的日志象这样:

      版本 注释 39. Working on MyBranch 38. Working on trunk 37. Working on MyBranch 36. Create branch MyBranch 35. Working on trunk 34. Working on trunk ...

      如果你要将 MyBranch 的修改合并到 trunk,应该选择36作为开始版本,而不是象你想的是37。如果你选择37作为开始点,那么差异引擎将会比较结束点与版本37比较,这就丢失了版本37做的修改。如果这听起来很复杂,不要担心,在TortoiseSVN中有更简单的方法 ...

      选择版本范围最简单的方法是,点击显示日志,列出最近的修改和日志。如果你要合并单个版本的修改,直接选取那个版本。如果你要合并多个版本,就选择范围(使用通常的Shift-键)。点击确认,就会为你填写合并对话框的全部域,开始版本结束版本

      当选择了检查框 使用 "开始:" URL,只有按钮显示日志可用。这是因为显示日志对话框设置了全部开始:结束:版本。所以你只用上面说的多项选择方法即可。

      如果你已经从这个分支合并了一些修改,希望你在提交日志中注明最后一个合并的版本号。这时,你可以在工作服本上使用显示日志对话框跟踪日志。使用最后合并的版本号作为本次合并的开始版本。例如,你已经合并了版本37到39,那么本次合并你应该从版本39开始。

    4. 如果你没有使用显示日志对话框显示版本范围,那么你需要手工设置结束版本。在范围中输入你想合并的最后一个版本号。这经常是最新版本,尽管它不必是 - 你只想合并单个版本。

    技术交流 录入:SVN中文技术网[www.svn8.com]
    Tags:  
    责任编辑:
请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
评论总数:0 [ 查看全部 ] 网友评论