Subversion 命令行客户端:svn
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
选项不需要子命令,几分钟后我们会到达那个部分。