本手册描述了 Subversion 1.2。如果你正在运行更新版本的 Subversion,我们强烈建议你访问 https://svnbook.subversion.org.cn/ 并查阅适合你 Subversion 版本的版本。
本章旨在为使用 Subversion 提供完整参考。这包括命令行客户端 (svn) 及其所有子命令,以及仓库管理程序 (svnadmin 和 svnlook) 及其各自的子命令。
要使用命令行客户端,你可以输入 svn、你要使用的子命令 [49] 以及你想要操作的任何选项或目标 - 子命令和选项出现的顺序没有具体规定。例如,以下所有方法都是使用 svn status 的有效方式
$ svn -v status $ svn status -v $ svn status -v myfile
你可以在 第 3 章,引导游览 中找到更多关于如何使用大多数客户端命令的示例,以及在 名为“属性”部分 中管理属性的命令。
虽然 Subversion 对其子命令有不同的选项,但所有选项都是全局的 - 也就是说,每个选项的含义都保证相同,无论你将其与哪个子命令一起使用。例如,--verbose
(-v
) 始终表示“详细输出”,无论你将其与哪个子命令一起使用。
--auto-props
启用自动属性,覆盖 config
文件中的 enable-auto-props
指令。
--config-dir
DIR
指示 Subversion 从指定的目录读取配置信息,而不是默认位置(用户主目录中的 .subversion
)。
--diff-cmd
CMD
指定一个外部程序来显示文件之间的差异。当调用 svn diff 时,它使用 Subversion 的内部 diff 引擎,该引擎默认提供统一的 diff。如果你想使用外部 diff 程序,请使用 --diff-cmd
。你可以使用 --extensions
选项将选项传递给 diff 程序(关于这一点将在本节稍后进行说明)。
--diff3-cmd
CMD
指定一个外部程序来合并文件。
--dry-run
执行命令的所有操作,但不进行任何实际更改 - 无论是在磁盘上还是在仓库中。
--editor-cmd
CMD
指定一个外部程序来编辑日志消息或属性值。有关如何指定默认编辑器的说明,请参阅 名为“配置”部分 中的 editor-cmd
部分。
--encoding
ENC
告诉 Subversion 你的提交消息以提供的字符集编码。默认值为操作系统的本机区域设置,如果你提交消息使用任何其他编码,则应指定编码。
--extensions
(-x
) ARGS
指定 Subversion 在提供文件之间的差异时应传递给外部 diff 命令的一个或多个参数。如果你想传递多个参数,则必须将它们全部括在引号中(例如,svn diff --diff-cmd /usr/bin/diff -x "-b -E")。此选项只能在也传递 --diff-cmd
选项的情况下使用。
--file
(-F
) FILENAME
将作为此选项参数传递的文件内容用于指定的子命令。
--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
用作更新的目标。
--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
属性中的模式匹配。有关更多信息,请参阅 名为“Config”的部分 和 名为“svn:ignore
”的部分。
--no-unlock
不自动解锁文件(默认的提交行为是解锁所有作为提交一部分列出的文件)。有关更多信息,请参阅 名为“Locking”的部分。
--non-interactive
在身份验证失败或凭据不足的情况下,防止提示输入凭据(例如用户名或密码)。如果您在自动化脚本中运行 Subversion,并且让 Subversion 失败比提示输入更多信息更合适,这将非常有用。
--non-recursive
(-N
)阻止子命令递归到子目录。大多数子命令默认情况下会递归,但有些子命令(通常是那些可能删除或撤消本地修改的子命令)不会。
--notice-ancestry
在计算差异时注意祖先。
--old
ARG
将 ARG
用作较旧的目标。
--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}
有关更多信息,请参阅 名为“Revision Keywords”的部分。
--revprop
对修订版本属性进行操作,而不是对特定于文件或目录的 Subversion 属性进行操作。此开关要求您还使用 --revision
(-r
) 开关传递修订版本。有关未版本控制属性的更多详细信息,请参阅 名为“Unversioned Properties”的部分。
--show-updates
(-u
)使客户端显示有关工作副本中哪些文件已过时的信息。这不会真正更新任何文件——它只是向您显示运行 svn update 时将更新哪些文件。
--stop-on-copy
使遍历版本控制资源历史记录的 Subversion 子命令在遇到复制(即历史记录中资源从存储库中的另一个位置复制的位置)时停止收集历史信息。
--strict
使 Subversion 使用严格的语义,除非谈论特定的子命令,否则这个概念相当模糊。
--targets
FILENAME
告诉 Subversion 从您提供的文件名获取要操作的文件列表,而不是在命令行上列出所有文件。
--username
NAME
表示您在命令行上提供用户名用于身份验证——否则,如果需要,Subversion 会提示您输入用户名。
--verbose
(-v
)请求客户端在运行任何子命令时打印尽可能多的信息。这可能会导致 Subversion 打印出其他字段、每个文件的详细信息或有关其操作的其他信息。
--version
打印客户端版本信息。此信息不仅包括客户端的版本号,还包括客户端可用于访问 Subversion 存储库的所有存储库访问模块的列表。
--xml
以 XML 格式打印输出。