手册

从他人处更新你的工作副本

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

Progress dialog showing finished update


你应该定期确保将他人所做的更改合并到你的本地工作副本中。从服务器获取更改到你的本地副本的过程被称为 更新。更新可以对单个文件、一组选定的文件或整个目录层级递归进行。要更新,选择你想要的文件和/或目录,右键单击 并选择资源管理器上下文菜单中的 TortoiseSVN更新。将会弹出一个窗口,显示更新运行的进度。他人所做的更改将被合并到你的文件中,同时保留你可能对相同文件所做的任何更改。版本库 不会 受更新影响。

进度对话框使用颜色编码来突出显示不同的更新操作

紫色

新条目已添加到你的工作副本。

深红色

工作副本中多余的条目被删除,或工作副本中丢失的条目被替换。

绿色

来自版本库的更改已成功与你的本地更改合并。

亮红色

来自版本库的更改与本地更改合并,导致冲突,你需要解决这些冲突。

黑色

工作副本中未更改的条目已使用版本库中的较新版本更新。

这是默认的颜色方案,但你可以使用设置对话框自定义这些颜色。阅读 名为“TortoiseSVN 颜色设置”的章节 以获取更多信息。

如果在更新期间遇到任何 冲突(如果其他人更改了与你相同文件中相同的行,并且这些更改不匹配,则可能会发生这种情况),则对话框会以红色显示这些冲突。你可以 双击 这些行以启动外部合并工具来解决冲突。

更新完成后,进度对话框会在文件列表下方显示已更新、添加、删除、冲突等的项目数量摘要。可以使用 Ctrl+C 将此摘要信息复制到剪贴板。

标准的“更新”命令没有选项,只是将你的工作副本更新到版本库的 HEAD 版本,这是最常见的用例。如果你想要更多地控制更新过程,你应该使用 TortoiseSVN更新到版本...。这允许你将工作副本更新到特定版本,而不仅仅是最新的版本。假设你的工作副本处于版本 100,但你希望它反映版本 50 中的状态 - 那么只需更新到版本 50 即可。

在同一个对话框中,你还可以选择更新当前文件夹的 深度。使用的术语在 名为“检出深度”的章节 中进行了描述。默认深度为 工作副本,这会保留现有的深度设置。你还可以将深度设置为 sticky,这意味着后续更新将使用该新深度,即该深度随后将用作默认深度。

为了更容易地包含或排除检出中的特定项目,请单击 选择项目... 按钮。这将打开一个新对话框,你可以在其中选中所有你想要在工作副本中的项目,并取消选中所有你不想要的项目。

你还可以选择是否在更新中忽略任何外部项目(即使用 svn:externals 引用的项目)。

注意

如果你将文件或文件夹更新到特定版本,则不应更改这些文件。当你尝试提交它们时,你将收到 过时 错误消息!如果你想撤消对文件的更改并从较早的版本重新开始,你可以从版本日志对话框回滚到以前的版本。查看 名为“回滚(撤消)版本库中的版本”的章节 以获取更多说明和替代方法。

更新到版本 有时可能有助于查看你的项目在历史记录中较早时候的样子。但总的来说,将单个文件更新到较早的版本不是一个好主意,因为它会使你的工作副本处于不一致的状态。如果你要更新的文件已更改名称,你甚至可能会发现该文件只是从你的工作副本中消失了,因为在较早的版本中不存在该名称的文件。你还应该注意,该项目将显示正常的绿色覆盖层,因此它与最新的文件无法区分。

如果你只是想要文件的旧版本的本地副本,最好使用该文件的日志对话框中的 上下文菜单将版本另存为... 命令。

多个文件/文件夹

如果你在资源管理器中选择多个文件和文件夹,然后选择 更新,则所有这些文件/文件夹都将逐个更新。TortoiseSVN 确保来自同一版本库的所有文件/文件夹都更新到完全相同的版本!即使在这些更新之间发生了另一次提交。

TortoiseSVN 主页