用来自别人的修改更新你的工作副本

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

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

你需要定期地确保将别人所做的修改整合到你本地的工作副本中。从服务器获取更改到本地副本的过程就叫做 更新。更新的对象可以是一个文件,选中的多个文件或者对整个目录结构进行递归。要进行更新,选中要更新的文件或目录,右键单击然后选中右键菜单中的 TortoiseSVN → 更新。将会弹出一个窗口,随着更新的进行显示进度。其他人所做的更改将会合并到你的文件中,并保留同一个文件中你所做的更改。版本库 不会 受更新影响。

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

  • 紫色

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

  • 深红

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

  • 绿色

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

  • 亮红

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

  • 黑色

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

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

如果在更新过程中发生了 冲突 (有可能是因为你和他人修改了同一个文件的同一行并且这些更改不匹配)那么对话框会用红色显示冲突。可以通过 双击 那些行来启动外部合并工具解决冲突。

等更新结束后,对话框会在文件列表的底部显示一段总结,包括已更新、已添加、已删除、冲突等情况的条目数量。可以使用 Ctrl+C 将这段信息复制到剪贴板。

The standard Update command has no options and just updates your working copy to the HEAD revision of the repository, which is the most common use case. If you want more control over the update process, you should use TortoiseSVN → Update to Revision… instead. This allows you to update your working copy to a specific revision, not only to the most recent one. Suppose your working copy is at revision 100, but you want it to reflect the state which it had in revision 50 - then simply update to revision 50.

在同一个对话框你也可以选中深度来更新当前文件夹。这些条款在“检出深度”一节

从检出中更方便的加入或者去除指定项目,单击选择项目按钮。这将打开一个新对话框,你选中在工作副本中检查所有你想要的项目,取消选中你不要的所有项目。

你也可以选择是否忽略更新中的外部项目(例如,使用svn:externals的项目)

小心

如果你将文件或文件夹更新至某个特定版本,就不应该修改这些文件。当提交它们时会得到错误消息 “过期”!如果你想撤销某个文件的更改然后从先前的版本开始重新开始,可以从版本日志对话框中回滚至先前的版本。查看 “版本库中回滚(撤销)版本”一节 获得更多的指示以及其它可选的操作方式。

当要查看你的项目在过去的某个时间是什么样子时, 更新至版本 功能有时会很有用。但一般来说,更新单个文件到一个较早的版本不是一个好主意,因为这样就使工作副本处于一种不一致的状态。如果更新的文件改变了文件名,你甚至会发现该文件从你的工作副本中消失了,因为在较早的版本中没有叫这个名字的文件。也还会发现该条目显示正常的绿色图标重载,所以很难察觉到存在过期的文件。

如果你只是想要某文件早先版本的本地副本,从该文件的日志对话框中使用 右键菜单 → 保存版本至… 更好。

多文件/文件夹

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