本文档描述了 Subversion 1.6.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅与您的 Subversion 版本相对应的文档版本。

svn—Subversion 命令行客户端

svn 是 Subversion 的官方命令行客户端。它提供了不少子命令和选项。子命令和其他非选项参数必须以指定的顺序出现在用于调用 svn 的命令行中。另一方面,选项可以出现在命令行的任何位置(当然是在程序名称之后),通常它们的顺序无关紧要。例如,以下所有方法都是使用 svn status 的有效方法,并且解释方式完全相同

$ svn -vq status myfile
$ svn status -v -q myfile
$ svn -q status -v myfile
$ svn status -vq myfile
$ svn status myfile -qv

svn 选项

虽然 Subversion 为其子命令提供不同的选项,但所有选项都存在于单个命名空间中——也就是说,每个选项都保证具有相同的含义,无论您将其用于哪个子命令。例如,--verbose (-v) 始终表示 详细输出,,无论您将其用于哪个子命令。

如果传递给 svn 命令行客户端的选项不适用于指定的子命令,则该客户端通常会快速退出并显示错误。但从 Subversion 1.5 开始,几个适用于所有(或几乎所有)子命令的选项已在所有子命令中被视为可接受的,即使它们对其中一些子命令没有影响。它们在命令行客户端的使用信息中被分组在一起,称为全局选项。这样做是为了帮助编写围绕命令行客户端的脚本的人。这些全局选项如下所示

--config-dir DIR

指示 Subversion 从指定的目录读取配置信息,而不是从默认位置 (.subversion 在用户的 home 目录中) 读取。

--config-option FILE:SECTION:OPTION=[VALUE]

在命令执行期间设置运行时配置选项的值。 FILESECTION 分别是运行时配置文件(configservers)及其包含要更改其值的选项的部分。 OPTION 当然是选项本身,而 VALUE 是您要分配给该选项的值(如果有)。例如,要暂时禁用自动属性设置功能的使用,请使用 --config-option=config:miscellany:enable-auto-props=no。您可以多次使用此选项来同时更改多个选项的值。

--no-auth-cache

防止在 Subversion 运行时配置目录中缓存身份验证信息(例如,用户名和密码)。

--non-interactive

禁用所有交互式提示。交互式提示的一些示例包括请求身份验证凭据和冲突解决决策。如果您在自动脚本中运行 Subversion,并且让 Subversion 失败比提示更多信息更合适,那么这很有用。

--password PASSWD

指定与 Subversion 服务器进行身份验证时要使用的密码。如果没有提供或不正确,Subversion 将在需要时提示您输入此信息。

--trust-server-cert

当与 --non-interactive 一起使用时,指示 Subversion 接受由未知证书颁发机构颁发的 SSL 服务器证书,而无需先提示用户。为了安全起见,您只应在远程服务器和客户端之间网络路径的完整性已知为可信时使用此选项。

--username NAME

指定与 Subversion 服务器进行身份验证时要使用的用户名。如果没有提供或不正确,Subversion 将在需要时提示您输入此信息。

其余选项仅适用于子命令的子集,并且被子命令的子集接受。它们如下所示

--accept ACTION

指定自动冲突解决的操作。可能的操作包括 postponebasemine-fulltheirs-fulleditlaunch

--auto-props

启用自动属性,覆盖 config 文件中的 enable-auto-props 指令。

--change (-c) ARG

用作引用特定 更改(也称为修订版)的方法。此选项是 -r ARG-1:ARG 的语法糖。

--changelist ARG

指示 Subversion 仅对名为 ARG 的变更列表中的成员进行操作。您可以多次使用此选项来指定变更列表集。

--cl ARG

--changelist 选项的别名。

--depth ARG

指示 Subversion 将操作范围限制到特定的树深度。 ARGempty(仅目标本身)、files(目标及其所有直接文件子项)、immediates(目标及其所有直接子项)或 infinity(目标及其所有后代——完全递归)之一。

--diff-cmd CMD

指定要使用的外部程序来显示文件之间的差异。当 svn diff 在没有此选项的情况下被调用时,它使用 Subversion 的内部 diff 引擎,该引擎默认提供统一的 diff。如果您想使用外部 diff 程序,请使用 --diff-cmd。您可以使用 --extensions (-x) 选项(稍后在本节中详细介绍)将选项传递给 diff 程序。

--diff3-cmd CMD

指定要使用的外部程序来合并文件。

--dry-run

完成运行命令的所有步骤,但不进行任何实际更改——无论是磁盘上的更改还是存储库中的更改。

--editor-cmd CMD

指定要使用的外部程序来编辑日志消息或属性值。有关指定默认编辑器的更多信息,请参阅 名为“Config”的部分 中的 editor-cmd 部分。

--encoding ENC

告诉 Subversion 您的提交消息是用提供的字符集编码的。默认值是您的操作系统的本机区域设置,如果您提交的消息使用其他编码,则应指定编码。

--extensions (-x) ARG

指定 Subversion 在执行差异计算时应进行的自定义设置。有效的扩展包括

--ignore-space-change (-b)

忽略空白量更改。

--ignore-all-space (-w)

忽略所有空白。

--ignore-eol-style

忽略 EOL(行尾)样式的更改。

--show-c-function (-p)

在 diff 输出中显示 C 函数名。

--unified (-u)

显示三行统一的 diff 上下文。

ARG 的默认值为 -u。如果您要传递多个参数,则必须将所有参数括在引号中。

请注意,当 Subversion 被配置为调用外部 diff 命令时,--extension (-x) 选项的值不受前面提到的选项的限制,但可以是 Subversion 应该传递给该命令的 任何 附加参数。

--file (-F) FILENAME

使用指定文件的内容来执行指定的子命令,尽管不同的子命令对该内容执行的操作不同。例如,svn commit 使用该内容作为提交日志,而 svn propset 使用它作为属性值。

--force

强制执行特定命令或操作。在正常使用中,Subversion 将阻止您执行某些操作,但您可以传递 force 选项来告诉 Subversion 我知道我在做什么以及可能产生的后果,所以让我去执行吧。'em。 此选项类似于在通电的情况下进行自己的电气工作——如果您不知道自己在做什么,您很可能会受到严重的电击。

--force-log

强制接受传递给 --message (-m) 或 --file (-F) 选项的可疑参数。默认情况下,如果传递给这些选项的参数看起来像是子命令的目标,则 Subversion 会产生错误。例如,如果您将版本化文件的路径传递给 --file (-F) 选项,Subversion 会假设您犯了一个错误,该路径实际上是操作的目标,并且您只是没有提供一些其他(非版本化)文件作为日志消息的来源。要断言您的意图并覆盖这些类型的错误,请将 --force-log 选项传递给接受日志消息的子命令。

--help (-h-?)

如果与一个或多个子命令一起使用,则显示每个子命令的内置帮助文本。如果单独使用,则显示一般客户端帮助文本。

--ignore-ancestry

告诉 Subversion 在计算差异时忽略祖先(仅依赖路径内容)。

--ignore-externals

告诉 Subversion 忽略 externals 定义以及由它们管理的外部工作副本。

--incremental

以适合连接的格式打印输出。

--keep-changelists

告诉 Subversion 在提交后不要删除变更列表。

--keep-local

保留文件或目录的本地副本(与 svn delete 命令一起使用)。

--limit (-l) NUM

仅显示前 NUM 条日志消息。

--message (-m) MESSAGE

表示您将在命令行中指定日志消息或锁定注释,在该选项之后。例如

$ svn commit -m "They don't make Sunday."
--native-eol ARG

导致 svn export 使用特定的行尾序列,就像它是客户端平台的本机序列一样。 ARG 可以是 CRLFCRLF 之一。

--new ARG

使用 ARG 作为较新的目标(与 svn diff 一起使用)。

--no-auto-props

禁用自动属性,覆盖 config 文件中的 enable-auto-props 指令。

--no-diff-deleted

阻止 Subversion 打印已删除文件的差异。当您删除文件时,默认行为是 svn diff 打印与您删除所有内容但保留文件时的差异相同的差异。

--no-ignore

在状态列表中显示通常会被忽略的文件,因为这些文件与 global-ignores 配置选项或 svn:ignore 属性中的模式匹配。有关更多信息,请参阅 “Config”部分“Ignoring Unversioned Items”部分

--no-unlock

告诉 Subversion 不要自动解锁文件(默认提交行为是解锁列为提交的一部分的所有文件)。有关更多信息,请参阅 “Locking”部分

--non-recursive (-N)

已弃用。停止子命令递归到子目录。大多数子命令默认情况下会递归,但有些不会。用户应避免使用此选项,而应改用更精确的 --depth 选项。对于大多数子命令,指定 --non-recursive 会产生与指定 --depth=files 相同的行为,但存在例外:非递归 svn statusimmediates 深度运行,而非递归形式的 svn revertsvn addsvn commitempty 深度运行。

--notice-ancestry

在计算差异时注意祖先。

--old ARG

ARG 用作较旧的目标(用于 svn diff)。

--parents

在操作期间创建和添加工作副本或存储库中不存在或未版本化的父级子目录。这对于在当前不存在的目录下自动创建多个子目录很有用。如果在 URL 上执行,所有目录将在单个提交中创建。

--quiet (-q)

请求客户端在执行操作时仅打印基本信息。

--record-only

将修订标记为已合并,用于 --revision (-r)。

--recursive (-R)

使子命令递归到子目录。大多数子命令默认情况下会递归。

--reintegrate

svn merge 子命令一起使用,将源 URL 的所有更改合并到工作副本中。有关详细信息,请参阅 “Keeping a Branch in Sync”部分

--relocate FROM TO [PATH...]

svn switch 子命令一起使用,更改工作副本引用的存储库的位置。如果您存储库的位置发生变化,并且您有一个您想要继续使用的现有工作副本,这将非常有用。有关更多详细信息和示例,请参阅 svn switch (sw)

--remove ARG

ARG 与变更列表分离

--revision (-r) REV

指示您将为特定操作提供修订(或修订范围)。您可以提供修订号、关键字或日期(在花括号中)作为修订选项的参数。如果您想提供修订范围,您可以提供两个用冒号分隔的修订。例如

$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}

有关更多信息,请参阅 “Revision Keywords”部分

--revprop

对修订属性进行操作,而不是对特定于文件或目录的属性进行操作。此选项要求您还使用 --revision (-r) 选项传递修订。

--set-depth ARG

将工作副本中目录的粘性深度设置为 excludeemptyfilesimmediatesinfinity 之一。有关这些含义以及如何使用此选项的详细说明,请参阅 “Sparse Directories”部分

--show-revs ARG

用于使 svn mergeinfo 显示 mergedeligible 修订。

--show-updates (-u)

使客户端显示有关工作副本中哪些文件过时的信息。这不会实际更新任何文件,它只向您显示如果随后使用 svn update,哪些文件将被更新。

--stop-on-copy

使遍历版本化资源历史记录的 Subversion 子命令在遇到复制(即历史记录中的位置,该资源从存储库中的另一个位置复制)时停止收集历史信息。

--strict

使 Subversion 使用严格语义,这是一个相当模糊的概念,除非谈论特定的子命令(即 svn propget)。

--summarize

仅显示有关操作的高级摘要通知,而不是其详细输出。

--targets FILENAME

告诉 Subversion 从 FILENAME 读取操作的额外目标路径。 FILENAME 应包含每行一个路径,每个路径应使用与您直接在命令行上指定它时相同的编码和格式。

--use-merge-history (-g)

使用或显示来自合并历史记录的额外信息。

--verbose (-v)

请求客户端在运行任何子命令时打印尽可能多的信息。这可能导致 Subversion 打印额外的字段、有关每个文件的详细信息或有关其操作的额外信息。

--version

打印客户端版本信息。此信息不仅包括客户端的版本号,还包括客户端可用于访问 Subversion 存储库的所有存储库访问模块的列表。使用 --quiet (-q) 它仅以紧凑形式打印版本号。

--with-all-revprops

svn log--xml 选项一起使用,指示 Subversion 检索和显示所有修订属性(Subversion 内部使用的标准属性以及任何用户定义的属性)在日志输出中。

--with-no-revprops

svn log--xml 选项一起使用,指示 Subversion 从日志输出中省略所有修订属性(包括标准日志消息、作者和修订日期戳)。

--with-revprop ARG

与任何写入存储库的命令一起使用时,使用 NAME=VALUE 格式设置修订属性,将 NAME 设置为 VALUE。与 svn log--xml 模式下一起使用时,这将在日志输出中显示 ARG 的值。

--xml

以 XML 格式打印输出。

svn 子命令

以下是 svn 程序的各种子命令。为了简洁起见,我们省略了全局选项(在 “svn Options”部分 中描述)从以下子命令描述中。