5.5. 用来自别人的修改更新你的工作复本

图 5.12. 已经完成更新的进度对话框

已经完成更新的进度对话框

你应该定期地确保别人作的修改与你的工作复本可以整合。从服务器上获取改动到你本地复本的过程称为更新。更新可以针对一个文件、几个选中的文件或是递归整个目录层次。要进行更新操作,请选择要更新文件和/或路径,右击选择右键菜单中的TortoiseSVN更新。会弹出一个窗口显示更新的进度。别人作的修改将合并到你的文件中,你所做的修改会被保留。版本库更新操作的影响。

进度对话框使用颜色代码来高亮不同的更新行为

紫色

新项已经增加到你的工作副本中。

深红

你的工作副本中删除了多余项,或是你的工作副本中丢失的项被替换。

绿色

版本库中的修改与你的本地修改成功合并。

亮红

来自版本库的修改在与本地修改合并时出现了冲突,需要你解决。

黑色

你WC中的没有改动的项被来自版本库中新版本所更新。

这是默认的配色方案,但你可以通过设置对话框来定制这些颜色。参考第 5.27.2.5 节 “TortoiseSVN 颜色设置”获得详情。

如果你在更新中遇到了冲突(这是由于别人与你修改了同一个文件的同一行代码,并且两者的修改不匹配),对话框中将冲突显示为红色,你可以双击这些行启动外部合并工具来解决冲突。

当更新完成后,进度对话框在文件列表下面显示汇总信息,多少项更新,增加,删除,冲突等。汇总信息可以使用CTRL+C复制到剪贴板。

标准的更新命令没有选项,仅仅是把你的工作复本更新到版本库中的最新版本,这也是最常用的情况。如果你要对更新过程进行更多的控制,就要使用TortoiseSVN更新到版本...。这个操作允许你更新工作复本到一个指定的版本,不仅仅是最新的。假设你的工作复本是在版本100,但你要回顾一下版本50是什么样的——那你只要简单地更新到版本50就可以了。在同一个对话框中你还可以选择不递归更新当前文件夹(就是不更新所有的子文件夹)并且可以选择是否在更新中忽略外部的项目(比如具有属性 svn:externals的被引用的项目).

[小心]小心

如果你把一个文件或是文件夹更新到某个特定的版本,你不应该对这些文件做修改。你在提交的时候会得到一个已经过期的错误消息!如果你要取消修改,从一个早前的版本重新开始,你可以通过版本日志对话框回滚到之前的版本。请看第 B.4 节 “回滚版本库里的版本”以获得详情和其他方法。

更新到版本在你偶尔要看看你的项目在早前某时刻是什么样子的时候很有用。但通常,更新单个文件到之前的版本不是一个好主意,因为这会使你的工作复本处于不一致的状态。如果你要更新的文件已经改了名,你可能甚至发现该文件从你的工作复本中消失了,因为早期的版本中不存在这个名字的文件。如果你只是简单地想要一个旧版本文件的本地复本,最好是在该文件的日志对话框中使用右键菜单另存版本为...命令。

[提示]多文件/文件夹

如果你在资源管理器中选择了多文件和文件夹,然后选择更新,这些文件/文件夹一个接一个的被更新。TortoiseSVN确保所有的来自同一版本库的文件/文件夹被更新到同一个版本!即使在更新过程中发生了另一个提交。

[提示]本地文件已经存在

有时在你试图更新的时候,更新失败,提示信息说已经有一个同名的本地文件。通常发生在Subversion试图检出一个新增的受控文件时,发现一个未受控的同名文件已经在工作路径中存在。Subversion绝不会覆盖一个未受控的文件——因为它有可能有你需要的东西,却碰匚与另一个开发者新提交的文件重名了。

如果你得到这个错误信息,解决的方法就是把本地的未受控文件重命名。在完成更新之后,你再检查被重命名的文件是不是还需要。

如果你一直得到错误,使用TortoiseSVN检查修改来列出所有有问题的文件。这样你可以一次性解决它们。