resolve: 解决工作副本中文件或目录的冲突。

用法:

resolve [PATH...]

默认情况下,使用交互方式解决 PATH 的冲突。在此模式下,默认进行递归处理 (深度为 “infinity”)。

选项 --accept=ARG 可阻止交互式提示,并以 ARG 指定的方式强制解决 PATH 上的冲突。在此模式下,默认不进行递归处理 (深度为 “empty”)。

除非已使用 “svn resolve” 命令将冲突的路径标记为已解决,否则无法使用 “svn commit” 命令来提交它。

Subversion 包含三种类型的冲突:文本冲突,属性冲突和树冲突。

对文件内容进行重叠的更改时,将发生文本冲突。文本冲突通常通过编辑冲突文件或使用合并工具 (可能是外部程序) 来解决。 命令 “svn resolve” 提供了可用于自动编辑文件的选项 (例如 “mine-full” 或 “theirs-conflict”),但是这些选项仅在可以完全放弃本地修改或传入修改的情况下才有用。

属性冲突通常是通过编辑冲突属性的值来解决 (通过交互式提示或使用 “svn propedit” 命令)。与文本冲突一样,存在一些选项可以自动编辑属性,而放弃某些更改而接受其它更修改。

当对目录结构进行更改时, 并且无法在不影响其他修改 (文本修改,属性修改或目录结构的其他修改) 的情况下将该这些修改应用于工作副本时, 就会发生树冲突。“svn status” 和 “svn info” 命令可以显示有关树冲突的一些简要信息。在交互模式之下,命令 “svn resolve” 将尝试详细描述树冲突,并有可能提供自动解决树冲突的选项。建议尽量使用这些自动选项,而不要尝试手动解决树冲突。

如果无法自动解决树冲突,建议在尝试解决冲突之前先找出发生冲突的原因。命令 “svn log -v” 可用来检查以前的版本中甚至在其它分支上所做的结构修改。命令 “svn help log” 描述了这些结构修改是如何显示的。一旦使用 “svn log” 命令找到了传入冲突的修改,则应检查并适当调整当前 “本地” 工作副本的状态,以解决冲突。这可能涉及手动或使用 “svn merge” 编辑文件。可能需要使用 “svn revert” 命令丢弃一些本地更改。文件或目录可能需要被复制,删除或移动。

有效选项:  
--targets ARG : 将文件 ARG 的内容作为附加参数
-R [--recursive] : 向下递归操作各级路径项,与 --depth=infinity 相同
--depth ARG : 限制输出深度为 ARG (empty, files, immediates, 或 infinity)
-q [--quiet] : 不输出信息,或只输出概要信息
--accept ARG : 指定自动解决冲突的措施:
  • base 使用 BASE 版本
  • working 使用工作副本
  • mine-conflict 冲突位置使用我的内容(简写:mc
  • theirs-conflict 冲突位置使用对方内容(简写:tc
  • mine-full 全部使用我的内容(简写:mf
  • theirs-full 全部使用对方的内容(简写:tf