Subversion 完全参考

目录

Subversion 命令行客户端:svn
svn选项
svn子命令
svnadmin
svnadmin选项
svnadmin子命令
svnlook
svnlook选项
svnlook子命令
svnsync
svnsync选项
svnsync子命令
svnserve
svnserve选项
svnversion
mod_dav_svn
Subversion属性
版本控制的属性
未版本控制的属性
版本库钩子

本章是使用Subversion的一个完全手册,包括了命令行客户端(svn)和它的所有子命令,也有版本库管理程序(svnadminsvnlook)和它们各自的子命令。

Subversion 命令行客户端:svn

为了使用命令行客户端,只需要输入svn和它的子命令[54]以及相关的选项或操作的对象—输入的子命令和选项没有特定的顺序,下面使用svn status的方式都是合法的:

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

你可以在第 2 章 基本使用发现更多使用客户端命令的例子,以及“属性”一节中的管理属性的命令。

svn选项

虽然Subversion的子命令有一些不同的选项,但有的选项是全局的—也就是说,每个选项保证是表示同样的事情,而不管是哪个子命令使用的。举个例子,--verbose-v)一直意味着“冗长输出”,而不管使用它的命令是什么。

--auto-props

开启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 diff --diff-cmd /usr/bin/diff -x "-b -E")括起所有的参数。这个选项只有在使用--diff-cmd选项时使用。

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

关闭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失败而不是提示更多的信息。

--non-recursive (-N)

防止子命令迭代到子目录,大多数子命令缺省是迭代的,但是一些子命令—通常是那些潜在的删除或者是取消本地修改的命令—不是。

--notice-ancestry

在计算区别时关注祖先。

--old ARG

使用ARG作为旧的目标(结合svn diff使用)。

--password PASS

指出在命令行中提供你的密码—另外,如果它是需要的,Subversion会提示你输入。

--quiet (-q)

请求客户端在执行操作时只显示重要信息。

--recursive (-R)

让子命令迭代到子目录,大多数子命令缺省是迭代的。

--relocate 目的路径[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

操作针对修订版本属性,而不是Subversion文件或目录的属性。这个选项需要你传递--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版本库的版本库访问模块列表。

--xml

使用XML格式打印输出。

svn子命令

下面是一些子命令:



[54] 是的,使用--version选项不需要子命令,几分钟后我们会到达那个部分。