本文档旨在描述 Subversion 1.4。如果您运行的是较新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的书籍。

Subversion 命令行客户端:svn

要使用命令行客户端,您需要键入 svn,您要使用的子命令 [58],以及您要操作的任何选项或目标 - 子命令和选项的出现顺序没有特定要求。例如,以下所有方法都是使用 svn status 的有效方式

$ svn -v status
$ svn status -v 
$ svn status -v myfile

您可以在 第 2 章,基本用法 中找到更多关于如何使用大多数客户端命令的示例,以及在 名为“属性”的部分 中找到关于管理属性的命令。

svn 选项

虽然 Subversion 为其子命令提供了不同的选项,但所有选项都是全局的 - 也就是说,每个选项都保证具有相同的含义,无论您使用它来搭配哪个子命令。例如,--verbose (-v) 始终表示“详细输出”,无论您使用它来搭配哪个子命令。

--auto-props

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

--change (-c) ARG

用作引用特定“更改”(也称为版本)的一种手段,此选项是“-r ARG-1:ARG”的语法糖。

--config-dir DIR

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

--diff-cmd CMD

指定一个外部程序来显示文件之间的差异。当 svn diff 在没有此选项的情况下被调用时,它使用 Subversion 的内部差异引擎,默认情况下提供统一的差异。如果您想使用外部差异程序,请使用 --diff-cmd。您可以使用 --extensions 选项将选项传递给差异程序(有关此选项的更多信息,请参见本节后面的内容)。

--diff3-cmd CMD

指定一个外部程序来合并文件。

--dry-run

执行运行命令的所有操作,但不会进行任何实际更改 - 既不会更改磁盘上的内容,也不会更改存储库中的内容。

--editor-cmd CMD

指定一个外部程序来编辑日志消息或属性值。请参阅 名为“配置”的部分 中的 editor-cmd 部分,了解指定默认编辑器的各种方法。

--encoding ENC

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

--extensions (-x) ARGS

指定 Subversion 应该传递给外部差异命令的一个或多个参数。此选项仅在与 svn diffsvn merge 命令一起使用时有效,并且需要使用 --diff-cmd 选项。如果您要传递多个参数,则必须将它们全部用引号括起来(例如,svn diff --diff-cmd /usr/bin/diff -x "-b -E")。

--file (-F) FILENAME

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

--force

强制执行特定命令或操作。在正常使用中,Subversion 会阻止您执行某些操作,但您可以传递 force 选项来告诉 Subversion“我知道我在做什么,也知道这样做的可能后果,所以请让我做吧”。此选项在程序上相当于在通电的情况下进行自己的电气工作 - 如果你不知道自己在做什么,你可能会受到严重的电击。

--force-log

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

--help (-h-?)

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

--ignore-ancestry

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

--ignore-externals

告诉 Subversion 忽略外部定义及其管理的外部工作副本。

--incremental

以适合串联的格式打印输出。

--limit NUM

仅显示前 NUM 条日志消息。

--message (-m) MESSAGE

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

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

使用 ARG 作为较新的目标(用于 svn diff)。

--no-auth-cache

阻止在 Subversion 管理目录中缓存身份验证信息(例如用户名和密码)。

--no-auto-props

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

--no-diff-added

阻止 Subversion 打印已添加文件的差异。添加文件时的默认行为是让 svn diff 打印与您添加现有(空)文件的全部内容时所看到的相同差异。

--no-diff-deleted

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

--no-ignore

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

--no-unlock

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

--non-interactive

在身份验证失败或凭据不足的情况下,阻止提示输入凭据(例如用户名或密码)。如果您在自动化脚本中运行 Subversion,并且让 Subversion 失败比提示输入更多信息更合适,这将很有用。

--non-recursive (-N)

阻止子命令递归进入子目录。大多数子命令默认情况下都会递归,但有些子命令(通常是那些可能删除或撤消本地修改的子命令)不会递归。

--notice-ancestry

在计算差异时注意祖先。

--old ARG

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

--password PASS

表示您在命令行上提供用于身份验证的密码 - 否则,如果需要,Subversion 会提示您输入密码。

--quiet (-q)

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

--recursive (-R)

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

--relocate FROM TO [PATH...]

svn switch 子命令一起使用,更改工作副本引用的存储库的位置。如果您存储库的位置发生变化,并且您希望继续使用现有的工作副本,这将很有用。请参阅 svn switch 了解示例。

--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}

有关更多信息,请参阅 名为“版本关键字”的部分

--revprop

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

--show-updates (-u)

导致客户端显示有关工作副本中哪些文件已过时信息。这不会实际更新任何文件 - 它只会显示运行 svn update 时将更新哪些文件。

--stop-on-copy

导致遍历版本控制资源历史记录的 Subversion 子命令在遇到复制(即资源在存储库中从其他位置复制的历史记录位置)时停止收集该历史信息。

--strict

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

--targets FILENAME

告诉 Subversion 从您提供的文件名中获取要操作的文件列表,而不是在命令行上列出所有文件。

--username NAME

表示您在命令行上提供用于身份验证的用户名 - 否则,如果需要,Subversion 会提示您输入用户名。

--verbose (-v)

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

--version

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

--xml

以 XML 格式打印输出。

svn 子命令

以下是各种子命令



[58] 是的,是的,你不需要子命令来使用 --version 选项,但我们很快就会谈到它。