第9章Subversion完全参考
最后更新于:2022-04-02 05:57:42
### 第9章Subversion完全参考
**目录**
本章是使用Subversion的一个完全手册,包括了命令行客户端(**svn**)和它的所有子命令,也有版本库管理程序(**svnadmin**和**svnlook**)和它们各自的子命令。
### Subversion命令行客户端:**svn**
为了使用命令行客户端,只需要输入**svn**和它的子命令[[43](#)]以及相关的选项或操作的对象―输入的子命令和选项没有特定的顺序,下面使用**svn status**的方式都是合法的:
~~~
$ svn -v status
$ svn status -v
$ svn status -v myfile
~~~
你可以在[第3章 *指导教程*]发现更多使用客户端命令的例子,以及[“属性”一节]中的管理属性的命令。
### **svn**选项
虽然Subversion的子命令有一些不同的选项,但有的选项是全局的―也就是说,每个选项保证是表示同样的事情,而不管是哪个子命令使用的。举个例子,`--verbose`(`-v`)一直意味着“冗长输出”,而不管使用它的命令是什么。
`--auto-props`
开启auto-props,覆盖`config`文件中的`enable-auto-props`指示。
`--config-dir`*`DIR`*
指导Subversion从指定目录而不是默认位置(用户主目录的`.subversion`)读取配置信息。
`--diff-cmd`*`CMD`*
指定用来表示文件区别的外部程序,当**svn diff**调用时,会使用Subversion的内置区别引擎,默认会提供统一区别输出,如果你希望使用一个外置区别程序,使用`--diff-cmd`。你可以通过`--extensions`(本小节后面有更多介绍)把选项传递到区别程序。
`--diff3-cmd`*`CMD`*
指定一个外置程序用来合并文件。
`--dry-run`
检验运行一个命令的效果,但没有实际的修改―可以用在磁盘和版本库。
`--editor-cmd`*`CMD`*
指定一个外部程序来编辑日志信息或是属性值。
`--encoding`*`ENC`*
告诉Subversion你的提交日志信息是通过提供的字符集编码的,缺省时是你的操作系统的本地编码,如果你的提交信息使用其它编码,你一定要指定这个值。
`--extensions` (`-x`) *`ARGS`*
指定一个或多个Subversion传递给提供文件区别的外部区别程序的参数,如果你要传递多个参数,你一定能够要用引号(例如,**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` or `-`)
如果同一个或多个子命令一起使用,会显示每个子命令内置的帮助文本,如果单独使用,它会显示常规的客户端帮助文本。
`--ignore-ancestry`
告诉Subversion在计算区别(只依赖于路径内容)时忽略祖先。
`--incremental`
打印适合串联的输出格式。
`--message` (`-m`) *`MESSAGE`*
表示你会在命令行中指定日志信息,紧跟这个开关,例如:
~~~
$ svn commit -m "They don't make Sunday."
~~~
`--new`*`ARG`*
使用*`ARG`*作为新的目标。
`--no-auth-cache`
阻止在Subversion管理区缓存认证信息(如用户名密码)。
`--no-auto-props`
关闭auto-props,覆盖`config`文件中的`enable-auto-props`指示。
`--no-diff-deleted`
防止Subversion打印删除文件的区别信息,缺省的行为方式是当你删除了一个文件后运行**svn diff**打印的区别与删除文件所有的内容得到的结果一样。
`--no-ignore`
在状态列表中显示`global-ignores`配置选项或者是`svn:ignore`属性忽略的文件。见[“config”一节]和[“`svn:ignore`”一节]查看详情。
`--non-interactive`
如果认证失败,或者是不充分的凭证时,防止出现要求凭证的提示(例如用户名和密码)。这在运行自动脚本时非常有用,只是让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}
~~~
见[“修订版本关键字”一节]查看更多信息。
`--revprop`
操作是针对一个修订版本的属性而不是一个文件或目录的属性。这个开关需要你也要通过`--revision`(`-r`)传递一个修订版本号,见[“未受版本控制的属性”一节]关于未版本化的属性的细节。
`--show-updates` (`-u`)
导致客户端显示本地拷贝哪些文件已经过期,这不会实际更新你的任何文件―只是显示了如果你运行**svn update**时更新的文件。
`--stop-on-copy`
导致Subversion子命令在传递历史时会在版本化资源拷贝时停止收集历史信息―也就是历史中资源从另一个位置拷贝过来时。
`--strict`
导致Subversion使用严格的语法,也就是选择含糊,除非谈论特定的子命令。
`--targets`*`FILENAME`*
告诉Subversion从你提供的文件中得到希望操作的文件列表,而不是在命令行列出所有的文件。
`--username`*`NAME`*
表示你要在命令行提供认证的用户名―否则如果需要,Subversion会提示你这一点。
`--verbose` (`-v`)
请求客户端在运行子命令打印尽量多的信息,会导致Subversion打印额外的字段,每个文件的细节信息或者是关于动作的附加信息。
`--version`
打印客户端版本信息,这个信息不仅仅包括客户端的版本号,也有所有客户端可以用来访问Subversion版本库的版本库访问模块列表。
`--xml`
使用XML格式打印输出。
### **svn**子命令
是的,使用`--version`选项不需要子命令,几分钟后我们会到达那个部分。
';