目录
mod_dav_svn Configuration Directives
前言
A、如何检索本文档
a、使用CSDN自带的“目录”功能进行检索,会更容易查找到自己需要的命令。
b、文档分为两部分:
b1、常用命令。基本用法,供常规操作时使用;
b2、全部命令。按名称排序,在常用命令不满足时检索;
B、svn常用命令查询:help —— 帮助
在使用过程中,可随时使用help命令查看各常用svn命令:
svn help
第一部分:常用命令
1、从仓库拉取时 —— 检出及更新
1.1、checkout —— 检出
svn checkout https://计算机名:8443/svn/仓库名/
说明:
1、可缩写为:
svn co https://计算机名:8443/svn/仓库名/
2、8443:如果是443可以不加,其它的都要添加
1.2、update —— 更新
当检出后,需要拉取仓库代码时,执行update操作
拉取仓库中的更新文件到本地
svn update
2、查看仓库及工作副本信息
2.1、svn status —— 查看状态
2.1.1、常规命令
"svn status" 简写 "svn st"
常见状态如下:
A 预定加入到版本库
C 发生冲突
D 被删除了
I 已忽略的文件/文件夹
M 内容被修改
K 被锁定
? 条目未纳入版本控制
! 该项目已遗失(被非svn命令删除)或不完整
~ 版本控制下的项目与其它类型的项目重名
2.1.2、查看所有文件状态(含已忽略)
"svn status --no-ignore" 简写 "svn st --no-ignore"
3.2、log —— 日志信息
"svn log" 用来展示svn 的版本作者、日期、路径等等。
svn log -r 6:8(查看某两个版本之间的信息)
svn log user/HelloWorld(只想查看某一个文件的版本修改信息)
"svn info file" 查看文件详细信息
"svn diff" 用来显示特定修改的行级详细信息。(不带任何参数,将会比较本地工作文件与缓存在.svn 的"原始"拷贝)
svn diff -r 3 rule.txt(比较本地工作拷贝和版本库中版本号为3的文件)
svn diff -r 2:3 rule.txt(比较svn工作版本中版本2和3的这个文件的变化)
"svn cat" 取得在特定版本的某文件显示在当前屏幕。
svn cat -r 版本号 rule.txt
"svn list" 显示一个目录或某一版本存在的文件。
svn list http://192.168.0.1/runoob01(可以在不下载文件到本地目录的情况下来察看目录中的文件)
3、变更(增删改),及提交
3.1、add/delete —— 添加/删除
在库本版中需要增加一个file文件
svn status
svn add file(添加)
svn delete file(删除)。简写:svn (del, remove, rm)
注:
1、file可以是文件,也可以是文件夹。
2、当file中有空格等特殊字符时,需要用双引号括起来。建议不管有没有特殊字符,都要加双引号,养成好习惯。
3、添加/删除只是被添加进待变更列表中,直到执行了commit操作后才会真正添加/删除。
3.2、忽略文件/文件夹
3.2.1、svn 命令行 加入忽略列表
要在SVN的命令行中添加到忽略列表,可以使用svn propset
命令。
下面是示例代码:
# 将文件或目录添加到忽略列表
svn propset svn:ignore <file_or_directory> .
# 查看当前工作副本的属性设置
svn proplist -v .
3.2.2、查看被忽略的文件/文件夹
首先,查询所有和服务端版本不一致的文件/文件夹状态
"svn status --no-ignore" 简写 "svn st --no-ignore"
然后,查看结果中前面是“I”的行,即是已忽略的内容。
3.3、commit——提交
在库本版中需要增加一个file文件
svn status
svn add file(添加)
svn delete file(删除)
svn commit -m "add file"(双引号内为注释信息)(svn ci)
注:
1、file可以是文件,也可以是文件夹。
2、当file中有空格等特殊字符时,需要用双引号括起来。建议不管有没有特殊字符,都要加双引号,养成好习惯。
3、添加/删除只是被添加进待变更列表中,直到执行了commit操作后才会真正添加/删除。
4、其它操作
4.1、revert —— 版本回退
撤销对单个文件的修改(未被提交commit)
svn st
svn revert file
撤销对整个目录的修改(即恢复原状),用"-R"命令(未被提交commit)
svn revert -R(递归) file
恢复一个已经提交的版本(已提交)
svn diff -r 22:21 file
svn merge -r 22:21 file (svn merge -r new:old file)
svn commit -m ""
4.2、切换svn服务器
4.3、切换用户
不常用,没找切换命令,用的是界面方式,步骤如下:
1、在安装TortoiseSVN的电脑目录中,右键
2、选择TortoiseSVN
3、选择“设置”
4、选择“已保存数据”
5、在“认证数据”后面,点击“清除”,或“清除全部”
第二部分:全部命令
1、svn命令
svn add
名称
svn add ― 添加文件、目录或符号链。
svn add PATH...
添加文件、目录或符号链到你的工作拷贝并且预定添加到版本库。它们会在下次提交上传并添加到版本库,如果你在提交之前改变了主意,你可以使用svn revert取消预定。
无
工作拷贝
否
--targets FILENAME
--non-recursive (-N)
--quiet (-q)
--config-dir DIR
--auto-props
--no-auto-props
--force
添加一个文件到工作拷贝:
$ svn add foo.c
A foo.c
当添加一个目录,svn add缺省的行为方式是递归的:
$ svn add testdir
A testdir
A testdir/a
A testdir/b
A testdir/c
A testdir/d
你可以只添加一个目录而不包括其内容:
$ svn add --non-recursive otherdir
A otherdir
通常情况下,命令*svn add 会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的--force
递归到版本化的目录下:
$ svn add * --force
A foo.c
A somedir/bar.c
A otherdir/docs/baz.doc
[...]
svn blame
名称
svn blame ― 显示特定文件和URL内嵌的作者和修订版本信息。
概要
svn blame TARGET...
描述
显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。
别名
praise、annotate、ann
变化
无
是否访问版本库
是
选项
--revision (-r) REV
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
--verbose
例子
如果你希望在测试版本库看到blame标记的readme.txt
源代码:
$ svn blame http://svn.red-bean.com/repos/test/readme.txt
3 sally This is a README file.
5 harry You should read this.
svn cat
名称
svn cat ― 输出特定文件或URL的内容。
概要
svn cat TARGET[@REV]...
描述
输出特定文件或URL的内容。列出目录的内容可以使用svn list。
别名
无
变化
无
是否访问版本库
是
选项
--revision (-r) REV
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
如果你希望不检出而察看版本库的readme.txt的内容:
$ svn cat http://svn.red-bean.com/repos/test/readme.txt
This is a README file.
You should read this.
如果你的工作拷贝已经过期(或者你有本地修改),并且希望察看工作拷贝的HEAD
修订版本的一个文件,如果你给定一个路径,svn cat会自动取得HEAD
的修订版本:
$ cat foo.c
This file is in my local working copy
and has changes that I've made.
$ svn cat foo.c
Latest revision fresh from the repository!
svn checkout
名称
svn checkout ― 从版本库取出一个工作拷贝。
概要
svn checkout URL[@REV]... [PATH]
描述
从版本库取出一个工作拷贝,如果省略*PATH
*,URL的基名称会作为目标,如果给定多个URL,每一个都会检出到PATH的子目录,使用URL基名称的子目录名称。
别名
co
变化
创建一个工作拷贝。
是否访问版本库
是
选项
--revision (-r) REV
--quiet (-q)
--non-recursive (-N)
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
取出一个工作拷贝到mine
:
$ svn checkout file:///tmp/repos/test mine
A mine/a
A mine/b
Checked out revision 2.
$ ls
mine
检出两个目录到两个单独的工作拷贝:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz
A test/a
A test/b
Checked out revision 2.
A quiz/l
A quiz/m
Checked out revision 2.
$ ls
quiz test
检出两个目录到两个单独的工作拷贝,但是将两个目录都放到working-copies
:
$ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz working-copies
A working-copies/test/a
A working-copies/test/b
Checked out revision 2.
A working-copies/quiz/l
A working-copies/quiz/m
Checked out revision 2.
$ ls
working-copies
如果你打断一个检出(或其它打断检出的事情,如连接失败。),你可以使用同样的命令重新开始或者是更新不完整的工作拷贝:
$ svn checkout file:///tmp/repos/test test
A test/a
A test/b
^C
svn: The operation was interrupted
svn: caught SIGINT
$ svn checkout file:///tmp/repos/test test
A test/c
A test/d
^C
svn: The operation was interrupted
svn: caught SIGINT
$ cd test
$ svn update
A test/e
A test/f
Updated to revision 3.
svn cleanup
名称
svn cleanup ― 递归清理工作拷贝。
概要
svn cleanup [PATH...]
描述
递归清理工作拷贝,删除未完成的操作锁定。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。见[附录B, 故障解决]。
如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个svn update失败,使用--diff3-cmd
选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir
指定任何配置目录,但是你应该不会经常使用这些选项。
无
工作拷贝
否
--diff3-cmd CMD
--config-dir DIR
svn cleanup没有输出,没有太多的例子,如果你没有传递路径,会使用“.
”。
$ svn cleanup
$ svn cleanup /path/to/working-copy
svn commit
名称
svn commit ― 将修改从工作拷贝发送到版本库。
概要
svn commit [PATH...]
描述
将修改从工作拷贝发送到版本库。如果你没有使用--file
或--message
提供一个提交日志信息,svn会启动你的编辑器来编写一个提交信息,见[“config”一节]的editor-cmd
小节。
提示
如果你开始一个提交并且Subversion启动了你的编辑器来编辑提交信息,你仍可以退出而不会提交你的修改,如果你希望取消你的提交,只需要退出编辑器而不保存你的提交信息,Subversion会提示你是选择取消提交、空信息继续还是重新编辑信息。
别名
ci(“check in”的缩写;不是“checkout”的缩写“co”。)
变化
工作拷贝,版本库
是否访问版本库
是
--message (-m) TEXT
--file (-F) FILE
--quiet (-q)
--non-recursive (-N)
--targets FILENAME
--force-log
--username USER
--password PASS
--no-auth-cache
--non-interactive
--encoding ENC
--config-dir DIR
使用命令行提交一个包含日志信息的文件修改,当前目录(“.
”)是没有说明的目标路径:
$ svn commit -m "added howto section."
Sending a
Transmitting file data .
Committed revision 3.
提交一个修改到foo.c
(在命令行明确指明),并且msg
文件中保存了提交信息:
$ svn commit -F msg foo.c
Sending foo.c
Transmitting file data .
Committed revision 5.
如果你希望使用在--file
选项中使用在版本控制之下的文件作为参数,你需要使用--force-log
选项:
$ svn commit --file file_under_vc.txt foo.c
svn: The log message file is under version control
svn: Log message file is a versioned file; use '--force-log' to override
$ svn commit --force-log --file file_under_vc.txt foo.c
Sending foo.c
Transmitting file data .
Committed revision 6.
提交一个已经预定要删除的文件:
$ svn commit -m "removed file 'c'."
Deleting c
Committed revision 7.
svn copy
名称
svn copy ― 拷贝工作拷贝的一个文件或目录到版本库。
概要
svn copy SRC DST
描述
拷贝工作拷贝的一个文件或目录到版本库。*SRC
和DST
*既可以是工作拷贝(WC)路径也可以是URL:
WC -> WC
拷贝并且预定一个添加的项目(包含历史)。
WC -> URL
将WC或URL的拷贝立即提交。
URL -> WC
检出URL到WC,并且加入到添加计划。
URL -> URL
完全的服务器端拷贝,通常用在分支和标签。
注意
你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。
别名
cp
如果目标是URL则包括版本库。
如果目标是WC路径,则是工作拷贝。
如果目标是版本库,或者需要查看修订版本号,则会访问版本库。
--message (-m) TEXT
--file (-F) FILE
--revision (-r) REV
--quiet (-q)
--username USER
--password PASS
--no-auth-cache
--non-interactive
--force-log
--editor-cmd EDITOR
--encoding ENC
--config-dir DIR
拷贝工作拷贝的一个项目(只是预定要拷贝―在提交之前不会影响版本库):
$ svn copy foo.txt bar.txt
A bar.txt
$ svn status
A + bar.txt
拷贝你的工作拷贝的一个项目到版本库的URL(直接的提交,所以需要提供一个提交信息):
$ svn copy near.txt file:///tmp/repos/test/far-away.txt -m "Remote copy."
Committed revision 8.
拷贝版本库的一个项目到你的工作拷贝(只是预定要拷贝―在提交之前不会影响版本库):
这是恢复死掉文件的推荐方式!
$ svn copy file:///tmp/repos/test/far-away near-here
A near-here
最后,是在URL之间拷贝:
$ svn copy file:///tmp/repos/test/far-away file:///tmp/repos/test/over-there -m "remote copy."
Committed revision 9.
这是在版本库里作“标签”最简单的方法―svn copy那个修订版本(通常是HEAD
)到你的tags目录。
$ svn copy file:///tmp/repos/test/trunk file:///tmp/repos/test/tags/0.6.32-prerelease -m "tag tree"
Committed revision 12.
不要担心忘记作标签―你可以在以后任何时候给一个旧版本作标签:
$ svn copy -r 11 file:///tmp/repos/test/trunk file:///tmp/repos/test/tags/0.6.32-prerelease -m "Forgot to tag at rev 11"
Committed revision 13.
svn delete
名称
svn delete ― 从工作拷贝或版本库删除一个项目。
概要
svn delete PATH...
svn delete URL...
描述
*PATH
*指定的项目会在下次提交删除,文件(和没有提交的目录)会立即从版本库删除,这个命令不会删除任何未版本化或已经修改的项目;使用--force
选项可以覆盖这种行为方式。
URL指定的项目会在直接提交中从版本库删除,多个URL的提交是原子操作。
别名
del, remove, rm
变化
如果操作对象是文件则是工作拷贝变化,对象是URL则会影响版本库。
是否访问版本库
对URL操作时访问
--force
--force-log
--message (-m) TEXT
--file (-F) FILE
--quiet (-q)
--targets FILENAME
--username USER
--password PASS
--no-auth-cache
--non-interactive
--editor-cmd EDITOR
--encoding ENC
--config-dir DIR
例子
使用svn从工作拷贝删除文件只是预定要删除,当你提交,文件才会从版本库删除。
$ svn delete myfile
D myfile
$ svn commit -m "Deleted file 'myfile'."
Deleting myfile
Transmitting file data .
Committed revision 14.
然而直接删除一个URL,你需要提供一个日志信息:
$ svn delete -m "Deleting file 'yourfile'" file:///tmp/repos/test/yourfile
Committed revision 15.
如下是强制删除本地已修改文件的例子:
$ svn delete over-there
svn: Attempting restricted operation for modified resource
svn: Use --force to override this restriction
svn: 'over-there' has local modifications
$ svn delete --force over-there
D over-there
svn diff
名称
svn diff ― 比较两条路径的区别。
概要
diff [-r N[:M]] [TARGET[@REV]...]
diff [-r N[:M]] --old OLD-TGT[@OLDREV] [--new NEW-TGT[@NEWREV]] [PATH...]
diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
描述
显示两条路径的区别,svn diff有三种使用方式:
**svn diff [-r N[:M]] [--old OLD-TGT] [--new NEW-TGT] [PATH...]*会显示OLD-TGT
和NEW-TGT
的区别。如果给定路径PATH
,它会被看作OLD-TGT
和NEW-TGT
的相对路径,输出也会限制在这些路径的区别上。OLD-TGT
和NEW-TGT
可以是工作拷贝路径或者是URL
[@
REV
]
。OLD-TGT
缺省是当前工作目录,而NEW-TGT
缺省是OLD-TGT
。N
缺省是BASE
,M
缺省时当前目录的版本,但如果NEW-TGT
是一个URL,则默认是HEAD
。svn diff -r N设置OLD-TGT
的修订版本为N
,svn diff -r N:M设置NEW-TGT
的修订版本是M
*。
svn diff [-r N[:M]] URL1[@N] URL2[@M]是svn diff [-r N[:M]] --old=URL1 --new=URL2的缩写。
*TARGET
*是一个URL,然后可以使用前面提到的--revision
或“@”符号来指定N和M。
如果*TARGET
*是工作拷贝路径,则--revision
选项的含义是:
--revision N:M
服务器比较 TARGET
@N
和TARGET
@M
。
--revision N
客户端比较*TARGET
@N
*和工作拷贝。
(无--revision
)
客户端比较base和 TARGET
的TARGET
。
如果使用其他语法,服务器会比较*URL1
和URL2
各自的N
和M
。如果省掉N
或M
*,会假定为HEAD
。
缺省情况下,svn diff忽略文件的祖先,只会比较两个文件的内容。如果你使用--notice-ancestry
,比较修订版本(也就是,当你运行svn diff比较两个内容相同,但祖先历史不同的对象会看到所有的内容被删除又再次添加)时就会考虑路径的祖先。
di
无
是否访问版本库
获得工作拷贝非BASE
修订版本的区别时会
--revision (-r) REV
--old OLD-TARGET
--new NEW-TARGET
--extensions (-x) "ARGS"
--non-recursive (-N)
--diff-cmd CMD
--notice-ancestry
--username USER
--password PASS
--no-auth-cache
--non-interactive
--no-diff-deleted
--config-dir DIR
比较BASE
和你的工作拷贝(svn diff最经常的用法):
$ svn diff COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 4404)
+++ COMMITTERS (working copy)
察看你的工作拷贝对旧的修订版本的修改:
$ svn diff -r 3900 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3900)
+++ COMMITTERS (working copy)
使用“@”语法与修订版本3000和35000比较:
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 \
http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
…
使用范围符号来比较修订版本3000和3500(在这种情况下只能传递一个URL):
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
使用范围符号比较修订版本3000和3500trunk
中的所有文件:
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk
使用范围符号比较修订版本3000和3500trunk
中的三个文件:
$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING
如果你有工作拷贝,你不必输入这么长的URL:
$ svn diff -r 3000:3500 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
使用--diff-cmd
CMD
-x
来指定外部区别程序
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS
Index: COMMITTERS
===================================================================
0a1,2
> This is a test
>
svn export
名称
svn export ― 导出一个干净的目录树。
概要
svn export [-r REV] URL[@PEGREV] [PATH]
svn export PATH1[@PEGREV] PATH2
描述
第一种从版本库导出干净工作目录树的形式是指定URL,如果指定了修订版本*REV
,会导出相应的版本,如果没有指定修订版本,则会导出HEAD
,导出到PATH
。如果省略PATH
,URL
*的最后一部分会作为本地目录的名字。
从工作拷贝导出干净目录树的第二种形式是指定*PATH1
到PATH2
*,所有的本地修改将会保留,但是不再版本控制下的文件不会拷贝。
别名
无
变化
本地磁盘
是否访问版本库
只有当从URL导出时会访问
选项
--revision (-r) REV
--quiet (-q)
--force
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
--native-eol EOL
例子
从你的工作拷贝导出(不会打印每一个文件和目录):
$ svn export a-wc my-export
Export complete.
从版本库导出目录(打印所有的文件和目录):
$ svn export file:///tmp/repos my-export
A my-export/test
A my-export/quiz
…
Exported revision 15.
当使用操作系统特定的分发版本,使用特定的EOL字符作为行结束符号导出一棵树会非常有用。--native-eol
选项会这样做,但是如果影响的文件拥有svn:eol-style = native
属性,举个例子,导出一棵使用CRLF作为行结束的树(可能是为了做一个Windows的.zip文件分发版本):
$ svn export file://tmp/repos my-export --native-eol CRLF
A my-export/test
A my-export/quiz
…
Exported revision 15.
svn help
名称
svn help ― 帮助!
概要
svn help [SUBCOMMAND...]
描述
当手边没有这本书时,这是你使用Subversion最好的朋友!
别名
, h
变化
无
是否访问版本库
不访问
选项
--version
--quiet (-q)
svn import
名称
svn import ― 递归提交一个路径的拷贝到URL。
概要
svn import [PATH] URL
描述
递归提交一个路径的拷贝到URL。如果省略*PATH
*,默认是“.
”。版本库中对应的父目录必须已经创建。
别名
无
变化
版本库
是否访问版本库
是
选项
--message (-m) TEXT
--file (-F) FILE
--quiet (-q)
--non-recursive (-N)
--username USER
--password PASS
--no-auth-cache
--non-interactive
--force-log
--editor-cmd EDITOR
--encoding ENC
--config-dir DIR
--auto-props
--no-auto-props
这会导入本地目录myproj
到版本库的 根目录:
$ svn import -m "New import" myproj http://svn.red-bean.com/repos/test
Adding myproj/sample.txt
…
Transmitting file data .........
Committed revision 16.
这将本地目录myproj
导入到版本库的trunk/misc
,trunk/misc
在导入之前不需要存在―svn import会递归的为你创建目录:
$ svn import -m "New import" myproj \
http://svn.red-bean.com/repos/test/trunk/misc/myproj
Adding myproj/sample.txt
…
Transmitting file data .........
Committed revision 19.
在导入数据之后,你会发现原先的目录树并没有纳入版本控制,为了开始工作,你还是要运行svn checkout得到一个干净的目录树工作拷贝。
svn info
名称
svn info ― 打印PATH的信息。
概要
svn info [PATH...]
描述
打印你的工作拷贝的路径信息,包括:
路经
名称
URL
修订版本
节点类型
最后修改的作者
最后修改的修订版本
最后修改的日期
最后更新的文本
最后更新的属性
核对
别名
无
变化
无
是否访问版本库
无
--targets FILENAME
--recursive (-R)
--config-dir DIR
svn info会展示所有项目的所有有用信息,它会显示文件的信息:
$ svn info foo.c
Path: foo.c
Name: foo.c
URL: http://svn.red-bean.com/repos/test/foo.c
Revision: 4417
Node Kind: file
Schedule: normal
Last Changed Author: sally
Last Changed Rev: 20
Last Changed Date: 2003-01-13 16:43:13 -0600 (Mon, 13 Jan 2003)
Text Last Updated: 2003-01-16 21:18:16 -0600 (Thu, 16 Jan 2003)
Properties Last Updated: 2003-01-13 21:50:19 -0600 (Mon, 13 Jan 2003)
Checksum: /3L38YwzhT93BWvgpdF6Zw==
它也会展示目录的信息:
$ svn info vendors
Path: trunk
URL: http://svn.red-bean.com/repos/test/vendors
Revision: 19
Node Kind: directory
Schedule: normal
Last Changed Author: harry
Last Changed Rev: 19
Last Changed Date: 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003)
svn list
名称
svn list ― 列出版本库目录的条目。
概要
svn list [TARGET[@REV]...]
描述
列出每一个*TARGET
文件和TARGET
目录的内容,如果TARGET
*是工作拷贝路径,会使用对应的版本库URL。
缺省的*TARGET
*是“.
”,意味着当前工作拷贝的版本库URL。
伴随--verbose
,如下的字段展示了项目的状态:
最后一次提交的修订版本号
最后一次提交的作者
大小(单位字节)
最后提交的日期时间
使用选项--xml
,输出是XML格式(如果没有指定--incremental
,会包括一个头和一个围绕的元素)。会展示所有的信息;不接受--verbose
选项。
别名
ls
无
是否访问版本库
是
选项
--revision (-r) REV
--verbose (-v)
--recursive (-R)
--incremental
--xml
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
如果你希望在没有下载工作拷贝时察看版本库有哪些文件,svn list会非常有用:
$ svn list http://svn.red-bean.com/repos/test/support
README.txt
INSTALL
examples/
…
你也可以传递--verbose
选项来得到额外信息,非常类似UNIX的ls -l命令:
$ svn list --verbose file:///tmp/repos
16 sally 28361 Jan 16 23:18 README.txt
27 sally 0 Jan 18 15:27 INSTALL
24 harry Jan 18 11:27 examples/
svn log
名称
svn log ― 显示提交日志信息。
概要
svn log [PATH]
svn log URL [PATH...]
描述
缺省目标是你的当前目录的路径,如果没有提供参数,svn log会显示当前目录下的所有文件和目录的日志信息,你可以通过指定路径来精炼结果,一个或多个修订版本,或者是任何两个的组合。对于本地路径的缺省修订版本范围BASE:1
。
如果你只是指定一个URL,就会打印这个URL上所有的日志信息,如果添加部分路径,只有这条路径下的URL信息会被打印,URL缺省的修订版本范围是HEAD:1
。
svn log使用--verbose
选项也会打印所有影响路径的日志信息,使用--quiet
选项不会打印日志信息正文本身(这与--verbose
协调一致)。
每个日志信息只会打印一次,即使是那些明确请求不止一次的路径,日志会跟随在拷贝过程中,使用--stop-on-copy
可以关闭这个特性,可以用来监测分支点。
别名
无
变化
无
是否访问版本库
是
选项
--revision (-r) REV
--quiet (-q)
--verbose (-v)
--targets FILENAME
--stop-on-copy
--incremental
--xml
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
你可以在顶级目录运行svn log看到工作拷贝中所有修改的路径的日志信息:
$ svn log
------------------------------------------------------------------------
r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line
Tweak.
------------------------------------------------------------------------
r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines
…
检验一个特定文件所有的日志信息:
$ svn log foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line
Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…
如果你手边没有工作拷贝,你可以查看一个URL的日志:
$ svn log http://svn.red-bean.com/repos/test/foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line
Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…
如果你希望查看某个URL下面不同的多个路径,你可以使用URL [PATH...]
语法。
$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line
Added defines.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line
Added new file bar.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…
当你想连接多个队日志命令的调用结果,你会希望使用--incremental
选项。svn log通常会在日志信息的开头和每一小段间打印一行虚线,如果你对一段修订版本运行svn log,你会得到下面的结果:
$ svn log -r 14:15
------------------------------------------------------------------------
r14 | ...
------------------------------------------------------------------------
r15 | ...
------------------------------------------------------------------------
然而,如果你希望收集两个不连续的日志信息到一个文件,你会这样做:
$ svn log -r 14 > mylog
$ svn log -r 19 >> mylog
$ svn log -r 27 >> mylog
$ cat mylog
------------------------------------------------------------------------
r14 | ...
------------------------------------------------------------------------
------------------------------------------------------------------------
r19 | ...
------------------------------------------------------------------------
------------------------------------------------------------------------
r27 | ...
------------------------------------------------------------------------
你可以使用incremental选项来避免两行虚线带来的混乱:
$ svn log --incremental -r 14 > mylog
$ svn log --incremental -r 19 >> mylog
$ svn log --incremental -r 27 >> mylog
$ cat mylog
------------------------------------------------------------------------
r14 | ...
------------------------------------------------------------------------
r19 | ...
------------------------------------------------------------------------
r27 | ...
--incremental
选项为--xml
提供了一个相似的输出控制。
如果你在特定路径和修订版本运行svn log,输出结果为空
$ svn log -r 20 http://svn.red-bean.com/untouched.txt
------------------------------------------------------------------------
这只意味着这条路径在那个修订版本没有修改,如果从版本库的顶级目录运行这个命令,或者是你知道那个修订版本修改了那个文件,你可以明确的指定它:
$ svn log -r 20 touched.txt
------------------------------------------------------------------------
r20 | sally | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line
Made a change.
------------------------------------------------------------------------
svn merge
名称
svn merge ― 应用两组源文件的差别到工作拷贝路径。
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
svn merge -r N:M SOURCE[@REV] [WCPATH]
第一种形式,源URL用修订版本号*N
和M
*指定,这是要比较的两组源文件,如果省略修订版本号,缺省是HEAD
。
第二种形式,*SOURCE
可以是URL或者工作拷贝项目,与之对应的URL会被使用。在修订版本号N
和M
*的URL定义了要比较的两组源。
WCPATH
是接收变化的工作拷贝路径,如果省略WCPATH
,会假定缺省值“.
”,除非源有相同基本名称与“.
”中的某一文件名字匹配:在这种情况下,区别会应用到那个文件。
不像svn diff,合并操作在执行时会考虑文件的祖先,当你从一个分支合并到另一个分支,而这两个分支有各自重命名的文件时,这一点会非常重要。
无
工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--force
--dry-run
--diff3-cmd CMD
--ignore-ancestry
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
将一个分支合并回主干(假定你有一份主干的工作拷贝,分支在修订版本250创建):
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch
U myproj/tiny.txt
U myproj/thhgttg.txt
U myproj/win.txt
U myproj/flo.txt
如果你的分支在修订版本23,你希望将主干的修改合并到分支,你可以在你的工作拷贝的分支上这样做:
$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors
U myproj/thhgttg.txt
…
合并一个单独文件的修改:
$ cd myproj
$ svn merge -r 30:31 thhgttg.txt
U thhgttg.txt
svn mkdir
名称
svn mkdir ― 创建一个纳入版本控制的新目录。
概要
svn mkdir PATH...
svn mkdir URL...
描述
创建一个目录,名字是提供的*PATH
或者URL的最后一部分,工作拷贝PATH
*指定的目录会预定要添加,而通过URL指定的目录会作为一次立即提交在版本库建立。多个目录URL的提交是原子操作,在两种情况下,中介目录必须已经存在。
别名
无
变化
如果是对URL操作则会影响版本库,否则是工作拷贝
是否访问版本库
只有在对URl操作时会
选项
--message (-m) TEXT
--file (-F) FILE
--quiet (-q)
--username USER
--password PASS
--no-auth-cache
--non-interactive
--editor-cmd EDITOR
--encoding ENC
--force-log
--config-dir DIR
例子
在工作拷贝创建一个目录:
$ svn mkdir newdir
A newdir
在版本库创建一个目录(立即提交,所以需要日志信息):
$ svn mkdir -m "Making a new dir." http://svn.red-bean.com/repos/newdir
Committed revision 26.
svn move
名称
svn move ― 移动一个文件或目录。
概要
svn move SRC DST
描述
这个命令移动文件或目录到你的工作拷贝或者是版本库。
提示
这个命令同svn copy加一个svn delete等同。
注意
Subversion不支持在工作拷贝和URL之间拷贝,此外,你只可以一个版本库内移动文件―Subversion不支持跨版本库的移动。
WC -> WC
移动和预订一个文件或目录将要添加(包含历史)。
URL -> URL
完全服务器端的重命名。
别名
mv, rename, ren
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--message (-m) TEXT
--file (-F) FILE
--revision (-r) REV
--quiet (-q)
--force
--username USER
--password PASS
--no-auth-cache
--non-interactive
--editor-cmd EDITOR
--encoding ENC
--force-log
--config-dir DIR
例子
移动工作拷bede一个文件:
$ svn move foo.c bar.c
A bar.c
D foo.c
移动版本库中的一个文件(一个立即提交,所以需要提交信息):
$ svn move -m "Move a file" http://svn.red-bean.com/repos/foo.c \
http://svn.red-bean.com/repos/bar.c
Committed revision 27.
svn propdel
名称
svn propdel ― 删除一个项目的一个属性。
概要
svn propdel PROPNAME [PATH...]
svn propdel PROPNAME --revprop -r REV [URL]
描述
这会删除文件、目录或修订版本的属性。第一种形式是在工作拷贝删除版本化属性,第二种是在一个版本库修订版本中删除未版本化的属性。
别名
pdel, pd
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--quiet (-q)
--recursive (-R)
--revision (-r) REV
--revprop
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
删除你的工作拷贝中一个文件的一个属性
$ svn propdel svn:mime-type some-script
property 'svn:mime-type' deleted from 'some-script'.
删除一个修订版本的属性:
$ svn propdel --revprop -r 26 release-date
property 'release-date' deleted from repository revision '26'
svn propedit
名称
svn propedit ― 修改一个或多个版本控制之下文件的属性。
概要
svn propedit PROPNAME PATH...
svn propedit PROPNAME --revprop -r REV [URL]
描述
使用喜欢的编辑器编辑一个或多个属性,第一种形式是在工作拷贝编辑版本化的属性,第二种形式是远程编辑未版本化的版本库修订版本属性。
别名
pedit, pe
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--revision (-r) REV
--revprop
--username USER
--password PASS
--no-auth-cache
--non-interactive
--encoding ENC
--editor-cmd EDITOR
--config-dir DIR
例子
svn propedit对修改多个值的属性非常简单:
$ svn propedit svn:keywords foo.c
<svn will launch your favorite editor here, with a buffer open
containing the current contents of the svn:keywords property. You
can add multiple values to a property easily here by entering one
value per line.>
Set new value for property 'svn:keywords' on 'foo.c'
svn propget
名称
svn propget ― 打印一个属性的值。
概要
svn propget PROPNAME [TARGET[@REV]...]
svn propget PROPNAME --revprop -r REV [URL]
描述
打印一个文件、目录或修订版本的一个属性的值,第一种形式是打印工作拷贝中一个或多个项目的版本化的属性,第二种形式是远程打印版本库修订版本的未版本化的属性。属性的详情见“属性”一节。
别名
pget, pg
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--recursive (-R)
--revision (-r) REV
--revprop
--strict
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
检查工作拷贝的一个文件的一个属性:
$ svn propget svn:keywords foo.c
Author
Date
Rev
对于修订版本属性相同:
$ svn propget svn:log --revprop -r 20
Began journal.
svn proplist
名称
svn proplist ― 列出所有的属性。
概要
svn proplist [TARGET[@REV]...]
svn proplist --revprop -r REV [URL]
描述
列出文件、目录或修订版本的属性,第一种形式是列出工作拷贝的所有版本化的属性,第二种形式是列出版本库修订版本的未版本化的属性。
别名
plist, pl
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--verbose (-v)
--recursive (-R)
--revision (-r) REV
--quiet (-q)
--revprop
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
你可以使用proplist察看你的工作拷贝的一个项目的属性:
$ svn proplist foo.c
Properties on 'foo.c':
svn:mime-type
svn:keywords
owner
通过--verbose
选项,svn proplist也可以非常便利的显示属性的值:
$ svn proplist --verbose foo.c
Properties on 'foo.c':
svn:mime-type : text/plain
svn:keywords : Author Date Rev
owner : sally
svn propset
名称
svn propset ― 设置文件、目录或者修订版本的属性PROPNAME为PROPVAL。
概要
svn propset PROPNAME [PROPVAL | -F VALFILE] PATH...
svn propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [URL]
描述
设置文件、目录或者修订版本的属性*PROPNAME
为PROPVAL
*。第一个例子在工作拷贝创建了一个版本化的本地属性修改,第二个例子创建了一个未版本化的远程的对版本库修订版本的属性修改。
提示
Subversion有一系列“特殊的”影响行为方式的属性,关于这些属性的详情请见[“特别属性”一节]。
别名
pset, ps
变化
如果对URL操作会影响版本库,否则只影响工作拷贝
是否访问版本库
只有在对URL操作时会
选项
--file (-F) FILE
--quiet (-q)
--revision (-r) REV
--targets FILENAME
--recursive (-R)
--revprop
--username USER
--password PASS
--no-auth-cache
--non-interactive
--encoding ENC
--force
--config-dir DIR
设置文件的mimetype:
$ svn propset svn:mime-type image/jpeg foo.jpg
property 'svn:mime-type' set on 'foo.jpg'
在UNIX系统,如果你希望一个文件设置执行权限:
$ svn propset svn:executable ON somescript
property 'svn:executable' set on 'somescript'
或许为了合作者的利益你有一个内部的属性设置:
$ svn propset owner sally foo.c
property 'owner' set on 'foo.c'
如果你在特定修订版本的日志信息里有一些错误,并且希望修改,可以使用--revprop
设置svn:log
为新的日志信息:
$ svn propset --revprop -r 25 svn:log "Journaled about trip to New York."
property 'svn:log' set on repository revision '25'
或者,你没有工作拷贝,你可以提供一个URL。
$ svn propset --revprop -r 26 svn:log "Document nap." http://svn.red-bean.com/repos
property 'svn:log' set on repository revision '25'
最后,你可以告诉propset从一个文件得到输入,你甚至可以使用这个方式来设置一个属性为二进制内容:
$ svn propset owner-pic -F sally.jpg moo.c
property 'owner-pic' set on 'moo.c'
缺省,你不可以在Subversion版本库修改修订版本属性,你的版本库管理员必须显示的通过创建一个名字为pre-revprop-change
的钩子来允许修订版本属性修改。
svn resolved
名称
svn resolved ― 删除工作拷贝文件或目录的“冲突”状态。
概要
svn resolved PATH...
描述
删除工作拷贝文件或目录的“conflicted”状态。这个程序不是语义上的改变冲突标志,它只是删除冲突相关的人造文件,从而重新允许路径提交;也就是说,它告诉Subversion冲突已经“解决了”。关于解决冲突更深入的考虑可以查看“解决冲突(合并别人的修改)”一节。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--targets FILENAME
--recursive (-R)
--quiet (-q)
--config-dir DIR
例子
如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:
$ svn update
C foo.c
Updated to revision 31.
$ ls
foo.c
foo.c.mine
foo.c.r30
foo.c.r31
当你解决了foo.c
的冲突,并且准备提交,运行svn resolved让你的工作拷贝知道你已经完成了所有事情。
警告
你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。
svn revert
名称
svn revert ― 取消所有的本地编辑。
概要
svn revert PATH...
描述
恢复所有对文件和目录的修改,并且解决所有的冲突状态。svn revert不会只是恢复工作拷贝中一个项目的内容,也包括了对属性修改的恢复。最终,你可以使用它来取消所有已经做过的预定操作(例如,文件预定要添加或删除可以“恢复”)。
别名
无
变化
工作拷贝
是否访问版本库
否
选项
--targets FILENAME
--recursive (-R)
--quiet (-q)
--config-dir DIR
例子
丢弃对一个文件的修改:
$ svn revert foo.c
Reverted foo.c
如果你希望恢复一整个目录的文件,可以使用--recursive
选项:
$ svn revert --recursive .
Reverted newdir/afile
Reverted foo.c
Reverted bar.txt
最后,你可以取消预定的操作:
$ svn add mistake.txt whoops
A mistake.txt
A whoops
A whoops/oopsie.c
$ svn revert mistake.txt whoops
Reverted mistake.txt
Reverted whoops
$ svn status
mistake.txt
whoops
如果你没有给svn revert提供了目标,它不会做任何事情―为了保护你不小心失去对工作拷贝的修改,svn revert需要你提供至少一个目标。
svn status
名称
svn status ― 打印工作拷贝文件和目录的状态。
概要
svn status [PATH...]
描述
打印工作拷贝文件和目录的状态。如果没有参数,只会打印本地修改的项目(不会访问版本库),使用--show-updates
选项,会添加工作修订版本和服务器过期信息。使用--verbose
会打印每个项目的完全修订版本信息。
输出的前五列都是一个字符宽,每一列给出了工作拷贝项目的每一方面的信息。
第一列指出一个项目的是添加、删除还是其它的修改。
' '
没有修改。
'A'
预定要添加的项目。
'D'
预定要删除的项目。
'M'
项目已经修改了。
'R'
项目在工作拷贝中已经被替换了。
'C'
项目与从版本库的更新冲突。
'X'
项目与外部定义相关。
'I'
项目被忽略(例如使用svn:ignore
属性)。
''
项目不在版本控制之下。
'!'
项目已经丢失(例如,你使用svn移动或者删除了它)。这也说明了一个目录不是完整的(一个检出或更新中断)。
'~'
项目作为一种对象(文件、目录或链接)纳入版本控制,但是已经被另一种对象替代。
第二列告诉一个文件或目录的属性的状态。
' '
没有修改。
'M'
这个项目的属性已经修改。
'C'
这个项目的属性与从版本库得到的更新有冲突。
第三列只在工作拷贝锁定时才会出现。
' '
项目没有锁定。
'L'
项目已经锁定。
第四列只在预定包含历史添加的项目出现。
' '
没有历史预定要提交。
'+'
历史预定要伴随提交。
第五列只在项目跳转到相对于它的父目录时出现(见[“转换工作拷贝”一节])。
' '
项目是它的父目录的孩子。
'S'
项目已经转换。
过期信息出现在第八列(只在使用--show-updates
选项时出现)。
' '
这个项目在工作拷贝是最新的。
'*'
在服务器这个项目有了新的修订版本。
余下的字段是可变得宽度且使用空格分隔,如果使用--show-updates
或--verbose
选项,工作修订版本是下一个字段。
如果传递--verbose
选项,最后提交的修订版本和最后的提交作者会在后面显示。
工作拷贝路径永远是最后一个字段,所以它可以包括空格。
stat, st
无
是否访问版本库
只有使用--show-updates
时会访问
--show-updates (-u)
--verbose (-v)
--non-recursive (-N)
--quiet (-q)
--no-ignore
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir
这是查看你在工作拷贝所做的修改的最简单的方法。
$ svn status wc
M wc/bar.c
A + wc/qax.c
如果你希望找出工作拷贝哪些文件是最新的,使用--show-updates
选项(这不会对工作拷贝有任何修改)。这里你会看到wc/foo.c
在上次更新后有了修改:
$ svn status --show-updates wc
M 965 wc/bar.c
* 965 wc/foo.c
A + 965 wc/qax.c
Status against revision: 981
--show-updates
只会在过期的项目(如果你运行svn update,就会更新的项目)旁边安置一个星号。--show-updates
不会导致状态列表反映项目的版本库版本。
最后,是你能从status子命令得到的所有信息:
$ svn status --show-updates --verbose wc
M 965 938 sally wc/bar.c
* 965 922 harry wc/foo.c
A + 965 687 harry wc/qax.c
965 687 harry wc/zig.c
Head revision: 981
关于svn status的更多例子可以查看svn官网。
svn switch
名称
svn switch ― 把工作拷贝更新到别的URL。
概要
svn switch URL [PATH]
switch --relocate FROM TO [PATH...]
描述
这个子命令更新你的工作拷贝来反映新的URL―通常是一个与你的工作拷贝分享共同祖先的URL,尽管这不是必需的。这是Subversion移动工作拷贝到分支的方式。更深入的了解请见[“转换工作拷贝”一节]。
别名
sw
变化
工作拷贝
是否访问版本库
是
选项
--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--diff3-cmd CMD
--relocate
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
如果你目前所在目录vendors
分支到vendors-with-fix
,你希望转移到那个分支:
$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U myproj/foo.txt
U myproj/bar.txt
U myproj/baz.c
U myproj/qux.c
Updated to revision 31.
为了跳转回来,只需要提供最初取出工作拷贝的版本库URL:
$ svn switch http://svn.red-bean.com/repos/trunk/vendors .
U myproj/foo.txt
U myproj/bar.txt
U myproj/baz.c
U myproj/qux.c
Updated to revision 31.
如果你不希望跳转所有的工作拷贝,你可以只跳转一部分。
有时候管理员会修改版本库的“基本位置”―换句话说,版本库的内容并不改变,但是访问根的主URL变了。举个例子,主机名变了、URL模式变了或者是URL中的任何一部分改变了。我们不选择重新检出一个工作拷贝,你可以使用svn switch来重写版本库所有URL的开头。使用--relocate
来做这种替换,没有文件内容会改变,访问的版本库也不会改变。只是像在工作拷贝.svn/
运行了一段Perl脚本s/OldRoot/NewRoot/。
$ svn checkout file:///tmp/repos test
A test/a
A test/b
…
$ mv repos newlocation
$ cd test/
$ svn update
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///tmp/repos'
$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.
警告
小心使用--relocate
选项,如果你输入了错误的选项,你会在工作拷贝创建无意义的URL,会导致整个工作区不可用并且难于修复。理解何时应该使用--relocate
也是非常重要的,下面是一些规则:
如果工作拷贝需要反映一个版本库的新目录,只需要使用svn switch。
如果你的工作拷贝还是反映相同的版本库目录,但是版本库本身的位置改变了,使用svn switch --relocate。
svn update
名称
svn update ― 更新你的工作拷贝。
概要
svn update [PATH...]
svn update会把版本库的修改带到工作拷贝,如果没有给定修订版本,它会把你的工作拷贝更新到HEAD
修订版本,否则,它会把工作拷贝更新到你用--revision
指定的修订版本。
对于每一个更新的项目开头都有一个表示所做动作的字符,这些字符有下面的意思:
A
添加
D
删除
U
更新
C
冲突
G
合并
第一列的字符反映文件本身的更新,而第二列会反映文件属性的更新。
别名
up
工作拷贝
是
选项
--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--diff3-cmd CMD
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
例子
获取你上次更新之后版本库的修改:
$ svn update
A newdir/toggle.c
A newdir/disclose.c
A newdir/launch.c
D newdir/README
Updated to revision 32.
你也可以将工作拷贝更新到旧的修订版本(Subversion没有CVS的“sticky”文件的概念;见[附录A, Subversion对于CVS用户]):
$ svn update -r30
A newdir/README
D newdir/toggle.c
D newdir/disclose.c
D newdir/launch.c
U foo.c
Updated to revision 30.
如果你希望检查单个文件的旧的修订版本,你会希望使用svn cat。
2、svnadmin命令
svnadmin
svnadmin是一个用来监控和修改Subversion版本库的管理工具,详情请见“svnadmin”一节。
因为svnadmin直接访问版本库(因此只可以在存放版本库的机器上使用),它通过路径访问版本库,而不是URL。
--bdb-log-keep
(Berkeley DB特定)关闭数据库日志自动日志删除功能。
--bdb-txn-nosync
(Berkeley DB特定)当提交数据库事务时关闭fsync。
--bypass-hooks
绕过版本库钩子系统。
--clean-logs
删除不使用的Berkeley DB日志。
--force-uuid
缺省情况下,当版本库加载已经包含修订版本的数据时svnadmin会忽略流中的UUID
,这个选项会导致版本库的UUID
设置为流的UUID
。
--ignore-uuid
缺省情况下,当加载空版本库时,svnadmin会使用来自流中的UUID
,这个选项会导致忽略UUID。
--incremental
导出一个修订版本针对前一个修订版本的区别,而不是通常的完全结果。
--parent-dir *
DIR*
当加载一个转储文件时,根路径为*DIR
*而不是/
。
--revision
(-r
) ARG
指定一个操作的修订版本。
--quiet
不显示通常的过程―只显示错误。
svnadmin create
名称
svnadmin create ― 创建一个新的空的版本库。
概要
svnadmin create REPOS_PATH
描述
在提供的路径上创建一个新的空的版本库,如果提供的目录不存在,它会为你创建。
选项
--bdb-txn-nosync
--bdb-log-keep
--config-dir DIR
--fs-type TYPE
例子
创建一个版本库就是这样简单:
$ svnadmin create /usr/local/svn/repos
在Subversion 1.0,一定会创建一个Berkeley DB版本库,在Subversion 1.1,Berkeley DB版本库是缺省类型,但是一个FSFS版本库也是可以创建,使用--fs-type
选项:
$ svnadmin create /usr/local/svn/repos --fs-type fsfs
记住svnadmin只工作在本地路径,而不是URL。
svnadmin deltify
名称
svnadmin deltify ― 修订版本范围的路径的增量变化。
概要
svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH
描述
svnadmin deltify因为历史原因之存在于1.0.x,这个命令已经废弃,不再需要。
它开始于当Subversion提供了管理员控制版本库压缩策略的能力,结果是复杂工作得到了非常小的收益,所以这个“特性”被废弃了。
选项
--revision (-r)
--quiet
svnadmin dump
名称
svnadmin dump ― 将文件系统的内容转储到标准输出。
概要
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
描述
使用“dumpfile”可移植格式将文件系统的内容转储到标准输出,将反馈发送到标准错误,导出的修订版本从*LOWER
到UPPER
。如果没有提供修订版本,会导出所有的修订版本树,如果只提供LOWER
*,导出一个修订版本树,通常的用法见[“版本库的移植”一节]。
如果Subversion的转储文件很大,你可以使用--deltas
来减小svnadmin创建的导出文件的大小。通过这个选项,就不会写出每次修订版本的内容,svnadmin dump只会写出版本之间的区别。然而,创建增量导出文件的坏处―对CPU的要求更高,svndumpfilter不可以对这个文件操作,而且非增量的转储文件可以更好的压缩。
选项
--revision (-r)
--incremental
--quiet
--deltas
转储整个版本库:
$ svnadmin dump /usr/local/svn/repos
SVN-fs-dump-format-version: 1
Revision-number: 0
* Dumped revision 0.
Prop-content-length: 56
Content-length: 56
…
从版本库增量转储一个单独的事务:
$ svnadmin dump /usr/local/svn/repos -r 21 --incremental
* Dumped revision 21.
SVN-fs-dump-format-version: 1
Revision-number: 21
Prop-content-length: 101
Content-length: 101
…
svnadmin help
名称
svnadmin help
概要
svnadmin help [SUBCOMMAND...]
描述
当你困于一个没有网络连接和本书的沙漠岛屿时,这个子命令非常有用。
, h
svnadmin hotcopy
名称
svnadmin hotcopy ― 制作一个版本库的热备份。
概要
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
描述
这个子命令会制作一个版本库的完全“热”拷贝,包括所有的钩子,配置文件,当然还有数据库文件。如果你传递--clean-logs
选项,svnadmin会执行热拷贝操作,然后删除不用的Berkeley DB日志文件。你可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。
选项
--clean-logs
svnadmin list-dblogs
名称
svnadmin list-dblogs ― 询问Berkeley DB在给定的Subversion版本库有哪些日志文件存在(只有在版本库使用bdb
作为后端时使用)。
概要
svnadmin list-dblogs REPOS_PATH
描述
Berkeley DB创建了记录所有版本库修改的日志,允许我们在面对大灾难时恢复。除非你开启了DB_LOGS_AUTOREMOVE
,否则日志文件会累积,尽管大多数是不再使用可以从磁盘删除得到空间。详情见[“管理磁盘空间”一节]。
svnadmin list-unused-dblogs
名称
svnadmin list-unused-dblogs ― 询问Berkeley DB哪些日志文件可以安全的删除(只有在版本库使用bdb
作为后端时使用)。
概要
svnadmin list-unused-dblogs REPOS_PATH
描述
Berkeley DB创建了记录所有版本库修改的日志,允许我们在面对大灾难时恢复。除非你开启了DB_LOGS_AUTOREMOVE
,否则日志文件会累积,尽管大多数是不再使用,可以从磁盘删除得到空间。详情见[“管理磁盘空间”一节]。
例子
删除所有不用的日志文件:
$ svnadmin list-unused-dblogs /path/to/repos
/path/to/repos/log.0000000031
/path/to/repos/log.0000000032
/path/to/repos/log.0000000033
$ svnadmin list-unused-dblogs /path/to/repos | xargs rm
## disk space reclaimed!
svnadmin load
名称
svnadmin load ― 从标准输出读取“转储文件”格式流。
概要
svnadmin load REPOS_PATH
描述
从标准输出读取“转储文件”格式流,提交新的修订版本到版本库文件系统,发送进展反馈到标准输出。
选项
--quiet (-q)
--ignore-uuid
--force-uuid
--parent-dir
这里显示了加载一个备份文件到版本库(当然,使用svnadmin dump):
$ svnadmin load /usr/local/svn/restored < repos-backup
<<< Started new txn, based on original revision 1
* adding path : test ... done.
* adding path : test/a ... done.
…
或者你希望加载到一个子目录:
$ svnadmin load --parent-dir new/subdir/for/project /usr/local/svn/restored < repos-backup
<<< Started new txn, based on original revision 1
* adding path : test ... done.
* adding path : test/a ... done.
…
svnadmin lstxns
名称
svnadmin lstxns ― 打印所有未提交的事物名称。
概要
svnadmin lstxns REPOS_PATH
描述
打印所有未提交的事物名称。关于未提交事物是怎样创建和如何使用的信息见[“版本库清理”一节]。
例子
列出版本库所有突出的事物。
$ svnadmin lstxns /usr/local/svn/repos/
1w
1x
svnadmin recover
名称
svnadmin recover ― 将版本库数据库恢复到稳定状态(只有在版本库使用bdb
作为后端时使用)。
概要
svnadmin recover REPOS_PATH
描述
在你得到的错误说明你需要恢复版本库时运行这个命令。
选项
--wait
恢复挂起的版本库:
$ svnadmin recover /usr/local/svn/repos/
Repository lock acquired.
Please wait; recovering the repository may take some time...
Recovery completed.
The latest repos revision is 34.
恢复数据库需要一个版本库的独占锁,如果另一个进程访问版本库,svnadmin recover会出错:
$ svnadmin recover /usr/local/svn/repos
svn: Failed to get exclusive repository access; perhaps another process
such as httpd, svnserve or svn has it open
$
--wait
选项可以导致svnadmin recover一直等待其它进程断开连接:
$ svnadmin recover /usr/local/svn/repos --wait
Waiting on repository lock; perhaps another process has it open
### time goes by...
Repository lock acquired.
Please wait; recovering the repository may take some time...
Recovery completed.
The latest repos revision is 34.
svnadmin rmtxns
名称
svnadmin rmtxns ― 从版本库删除事物。
概要
svnadmin rmtxns REPOS_PATH TXN_NAME...
描述
删除版本库突出的事物,更多细节在svn官网。
选项
--quiet (-q)
例子
删除命名的事物:
$ svnadmin rmtxns /usr/local/svn/repos/ 1w 1x
很幸运,lstxns的输出作为rmtxns输入工作良好:
$ svnadmin rmtxns /usr/local/svn/repos/ `svnadmin lstxns /usr/local/svn/repos/`
从版本库删除所有未提交的事务。
svnadmin setlog
名称
svnadmin setlog ― 设置某个修订版本的日志信息。
概要
svnadmin setlog REPOS_PATH -r REVISION FILE
描述
设置修订版本REVISION的日志信息为FILE的内容。
这与使用svn propset --revprop设置某一修订版本的svn:log
属性效果一样,除了你也可以使用--bypass-hooks
选项绕过的所有pre-或post-commit的钩子脚本,这在pre-revprop-change钩子脚本中禁止修改修订版本属性时非常有用。
警告
修订版本属性不在版本控制之下的,所以这个命令会永久覆盖前一个日志信息。
选项
--revision (-r) ARG
--bypass-hooks
例子
设置修订版本19的日志信息为文件msg
的内容:
$ svnadmin setlog /usr/local/svn/repos/ -r 19 msg
svnadmin verify
名称
svnadmin verify ― 验证版本库保存的数据。
概要
svnadmin verify REPOS_PATH
描述
如果希望验证版本库的完整性可以运行这个命令,原理是通过在内部转储遍历所有的修订版本并且丢掉输出。
例子
检验挂起的版本库:
$ svnadmin verify /usr/local/svn/repos/
* Verified revision 1729.
3、svnlook
svnlook
svnlook是检验Subversion版本库不同方面的命令行工具,它不会对版本库有任何修改―它只是用来“看”。svnlook通常被版本库钩子使用,但是版本库管理也会发现它在诊断目的上也非常有用。
因为svnlook通过直接版本库访问(因此只可以在保存版本库的机器上工作)工作,所以他通过版本库的路径访问,而不是URL。
如果没有指定修订版本或事物,svnlook缺省的是版本库最年轻的(最新的)修订版本。
svnlook的选项是全局的,就像svn和svnadmin;然而,大多数选项只会应用到一个子命令,因为svnlook的功能是(有意的)限制在一定范围的。
--no-diff-deleted
防止svnlook打印删除文件的区别,缺省的行为方式是当一个文件在一次事物/修订版本中删除后,得到的结果与保留这个文件的内容变成空相同。
--revision
(-r
)
指定要进行检查的特定修订版本。
--transaction
(-t
)
指定一个希望检查的特定事物ID。
--show-ids
显示文件系统树中每条路径的文件系统节点修订版本ID。
svnlook author
名称
svnlook author ― 打印作者。
概要
svnlook author REPOS_PATH
描述
打印版本库一个修订版本或者事物的作者。
选项
--revision (-r)
--transaction (-t)
例子
svnlook author垂手可得,但是并不令人激动:
$ svnlook author -r 40 /usr/local/svn/repos
sally
svnlook cat
名称
svnlook cat ― 打印一个文件的内容。
概要
svnlook cat REPOS_PATH PATH_IN_REPOS
描述
打印一个文件的内容。
选项
--revision (-r)
--transaction (-t)
例子
这会显示事物ax8
中一个文件的内容,位于/trunk/README
:
$ svnlook cat -t ax8 /usr/local/svn/repos /trunk/README
Subversion, a version control system.
=====================================
$LastChangedDate: 2003-07-17 10:45:25 -0500 (Thu, 17 Jul 2003) $
Contents:
I. A FEW POINTERS
II. DOCUMENTATION
III. PARTICIPATING IN THE SUBVERSION COMMUNITY
…
svnlook changed
名称
svnlook changed ― 打印修改的路径。
概要
svnlook changed REPOS_PATH
描述
打印在特定修订版本或事物修改的路径,也是在第一列使用“svn update样式的”状态字符:A
表示添加,D
表示删除,U
表示更新(修改)。
选项
--revision (-r)
--transaction (-t)
例子
显示在测试版本库修订版本39修改的文件列表:
$ svnlook changed -r 39 /usr/local/svn/repos
A trunk/vendors/deli/
A trunk/vendors/deli/chips.txt
A trunk/vendors/deli/sandwich.txt
A trunk/vendors/deli/pickle.txt
svnlook date
名称
svnlook date ― 打印时间戳。
概要
svnlook date REPOS_PATH
描述
打印版本库一个修订版本或事物的时间戳。
选项
--revision (-r)
--transaction (-t)
例子
显示测试版本库修订版本40的日期:
$ svnlook date -r 40 /tmp/repos/
2003-02-22 17:44:49 -0600 (Sat, 22 Feb 2003)
svnlook diff
名称
svnlook diff ― 打印修改的文件和属性的区别。
概要
svnlook diff REPOS_PATH
描述
打印版本库中GNU样式的文件和属性修改区别。
选项
--revision (-r)
--transaction (-t)
--no-diff-deleted
例子
这显示了一个新添加的(空的)文件,一个删除的文件和一个拷贝的文件:
$ svnlook diff -r 40 /usr/local/svn/repos/
Copied: egg.txt (from rev 39, trunk/vendors/deli/pickle.txt)
Added: trunk/vendors/deli/soda.txt
==============================================================================
Modified: trunk/vendors/deli/sandwich.txt
==============================================================================
--- trunk/vendors/deli/sandwich.txt (original)
+++ trunk/vendors/deli/sandwich.txt 2003-02-22 17:45:04.000000000 -0600
@@ -0,0 +1 @@
+Don't forget the mayo!
Modified: trunk/vendors/deli/logo.jpg
==============================================================================
(Binary files differ)
Deleted: trunk/vendors/deli/chips.txt
==============================================================================
Deleted: trunk/vendors/deli/pickle.txt
==============================================================================
如果一个文件有非文本的svn:mime-type
属性,区别不会明确显示。
svnlook dirs-changed
名称
svnlook dirs-changed ― 打印本身修改的目录。
概要
svnlook dirs-changed REPOS_PATH
描述
打印本身修改(属性编辑)或子文件修改的目录。
选项
--revision (-r)
--transaction (-t)
例子
这显示了在我们的实例版本库中在修订版本40修改的目录:
$ svnlook dirs-changed -r 40 /usr/local/svn/repos
trunk/vendors/deli/
svnlook help
名称
svnlook help
概要
Also svnlook -h and svnlook -.
描述
显示svnlook的帮助信息,这个命令如同svn help的兄弟,也是你的朋友,即使你从不调用它,并且忘掉了邀请它加入你的上一次聚会。
别名
, h
svnlook history
名称
svnlook history ― 打印版本库(如果没有路径,则是根目录)某一个路径的历史。
概要
svnlook history REPOS_PATH [PATH_IN_REPOS]
描述
打印版本库(如果没有路径,则是根目录)某一个路径的历史。
选项
--revision (-r)
--show-ids
例子
这显示了实例版本库中作为修订版本20的路径/tags/1.0
的历史输出。
$ svnlook history -r 20 /usr/local/svn/repos /tags/1.0 --show-ids
REVISION PATH <ID>
-------- ---------
19 /tags/1.0 <1.2.12>
17 /branches/1.0-rc2 <1.1.10>
16 /branches/1.0-rc2 <1.1.x>
14 /trunk <1.0.q>
13 /trunk <1.0.o>
11 /trunk <1.0.k>
9 /trunk <1.0.g>
8 /trunk <1.0.e>
7 /trunk <1.0.b>
6 /trunk <1.0.9>
5 /trunk <1.0.7>
4 /trunk <1.0.6>
2 /trunk <1.0.3>
1 /trunk <1.0.2>
svnlook info
名称
svnlook info ― 打印作者、时间戳、日志信息大小和日志信息。
概要
svnlook info REPOS_PATH
描述
打印作者、时间戳、日志信息大小和日志信息。
选项
--revision (-r)
--transaction (-t)
例子
显示了你的实例版本库在修订版本40的信息输出。
$ svnlook info -r 40 /usr/local/svn/repos
sally
2003-02-22 17:44:49 -0600 (Sat, 22 Feb 2003)
15
Rearrange lunch.
svnlook log
名称
svnlook log ― 打印日志信息。
概要
svnlook log REPOS_PATH
描述
打印日志信息。
选项
--revision (-r)
--transaction (-t)
例子
这显示了实例版本库在修订版本40的日志输出:
$ svnlook log /tmp/repos/
Rearrange lunch.
svnlook propget
名称
svnlook propget ― 打印版本库中一个路径一个属性的原始值。
概要
svnlook propget REPOS_PATH PROPNAME [PATH_IN_REPOS]
描述
列出版本库中一个路径一个属性的值。
别名
pg, pget
选项
--revision (-r)
--transaction (-t)
例子
这显示了HEAD
修订版本中文件/trunk/sandwich
的“seasonings”属性的值:
$ svnlook pg /usr/local/svn/repos seasonings /trunk/sandwich
mustard
svnlook proplist
名称
svnlook proplist ― 打印版本化的文件和目录的属性名称和值。
概要
svnlook proplist REPOS_PATH [PATH_IN_REPOS]
描述
列出版本库中一个路径的属性,使用--verbose
选项也会显示所有的属性值。
别名
pl, plist
选项
--revision (-r)
--transaction (-t)
--verbose (-v)
例子
这显示了HEAD
修订版本中/trunk/README
的属性名称:
$ svnlook proplist /usr/local/svn/repos /trunk/README
original-author
svn:mime-type
这与前一个例子是同一个命令,但是同时显示了属性值:
$ svnlook --verbose proplist /usr/local/svn/repos /trunk/README
original-author : fitz
svn:mime-type : text/plain
svnlook tree
名称
svnlook tree ― 打印树。
概要
svnlook tree REPOS_PATH [PATH_IN_REPOS]
描述
打印树,从*PATH_IN_REPOS
*(如果提供,会作为树的根)开始,可以选择显示节点修订版本ID。
选项
--revision (-r)
--transaction (-t)
--show-ids
例子
这会显示实例版本库中修订版本40的树输出(包括节点ID):
$ svnlook tree -r 40 /usr/local/svn/repos --show-ids
/ <0.0.2j>
trunk/ <p.0.2j>
vendors/ <q.0.2j>
deli/ <1g.0.2j>
egg.txt <1i.e.2j>
soda.txt <1k.0.2j>
sandwich.txt <1j.0.2j>
svnlook uuid
名称
svnlook uuid ― 打印版本库的UUID
。
概要
svnlook uuid REPOS_PATH
描述
打印版本库的UUID
,UUID是版本库的Universal Unique IDentifier(全局唯一标示),Subversion客户端可以使用这个标示区分不同的版本库。
例子
$ svnlook uuid /usr/local/svn/repos
e7fe1b91-8cd5-0310-98dd-2f12e793c5e8
svnlook youngest
名称
svnlook youngest ― 打印最年轻的修订版本号。
概要
svnlook youngest REPOS_PATH
描述
打印一个版本库最年轻的修订版本号。
例子
这显示了在实例版本库显示最年轻的修订版本:
$ svnlook youngest /tmp/repos/
42
4、svnserve
svnserve
svnserve允许Subversion版本库使用svn
网络协议,你可以作为独立服务器进程运行svnserve,或者是使用其它进程,如inetd、xinetd或sshd为你启动进程。
一旦客户端已经选择了一个版本库来传递它的URL,svnserve会读取版本库目录的conf/svnserve.conf
文件,来检测版本库特定的设置,如使用哪个认证数据库和应用怎样的授权策略。关于svnserve.conf
文件的详情见“svnserve,一个自定义的服务器”一节。
不象前面描述的例子,svnserve没有子命令―svnserve完全通过选项控制。
--daemon
(-d
)
导致svnserve以守护进程方式运行,svnserve维护本身并且接受和服务svn端口(缺省3690)的TCP/IP连接。
--listen-port
=PORT
在守护进程模式时导致svnserve监听*PORT
*端口。
--listen-host
=HOST
svnserve监听的*HOST
*,可能是一个主机名或是一个IP地址。
--foreground
当与-d
一起使用,会导致svnserve停留在前台,主要用来调试。
--inetd
(-i
)
导致svnserve使用标准输出/标准输入文件描述符,更准确的是使用inetd作为守护进程。
--help
(-h
)
显示有用的摘要和选项。
--version
显示版本信息,版本库后端存在和可用的模块列表。
--root
=ROOT
(-r
=ROOT
)
设置svnserve服务的版本库的虚拟根,客户端提供的URL中显示的路径会解释为这个根的相对路径,不会允许离开这个根。
--tunnel
(-t
)
导致svnserve以管道模式运行,很像inetd操作的模式(服务于一个标准输入/标准输出的连接),除了连接是用当前uid的用户名预先认证过的这一点。这个选项在客户端使用如ssh之类的管道时使用。
--tunnel-user NAME
与--tunnel
选项结合使用;告诉svnserve假定NAME就是认证用户,而不是svnserve进程的UID用户,当希望多个用户通过SSH共享同一个系统帐户,但是维护各自的提交标示符时非常有用。
--threads
(-T
)
当以守护进程模式运行,导致svnserve为每个连接产生一个线程而不是一个进程,svnserve进程本身在启动后会一直在后台。
--listen-once
(-X
)
导致svnserve在svn端口接受一个连接,维护完成它退出。这个选项主要用来调试。
svnversion
名称
svnversion ― 总结工作拷贝的本地修订版本。
概要
svnversion [OPTIONS] WC_PATH [TRAIL_URL]
描述
svnversion是用来总结工作拷贝修订版本混合的程序,结果修订版本号或范围会写到标准输出。
如果提供TRAIL_URL,URL的尾端部分用来监测是否WC_PATH本身已经跳转(监测WC_PATH的跳转不需要依赖TRAIL_URL)。
像svnserve,svnversion没有子命令,只有选项。
--no-newline
(-n
)
忽略输出的尾端新行。.
--committed
(-c
)
使用最后修改修订版本而不是当前的(例如,本地存在的最高修订版本)修订版本。
--help
(-h
)
打印帮助摘要。
--version
打印svnversion,如果没有错误退出。
例子
如果工作拷贝都是一样的修订版本(例如,在更新后那一刻),会打印修订版本:
$ svnversion .
4168
添加TRAIL_URL来展示工作拷贝不是从你希望的地方跳转过来的:
$ svnversion . /repos/svn/trunk
4168
对于混合修订版本的工作拷贝,修订版本的范围会被打印:
$ svnversion .
4123:4168
如果工作拷贝包含修改,后面会紧跟一个"M":
$ svnversion .
4168M
如果工作拷贝已经跳转,后面会有一个"S":
$ svnversion .
4168S
因此,这里是一个混合修订版本,跳转的工作拷贝包含了一些本地修改:
$ svnversion .
4212:4168MS
如果从一个目录而不是工作拷贝调用,svnversion假定它是一个导出的工作拷贝并且打印"exported":
$ svnversion .
exported
5、其它
mod_dav_svn Configuration Directives
名称
mod_dav_svn
Configuration Directives ― Apache通过Apache HTTP服务器用来维护Subversion版本库配置指示。
描述
这个小节主要描述了Subversion Apache配置的每个指示,关于Apache配置Subversion的更多信息见svn官网。
DAV svn
这个指示必须包含在所有Subversion版本库的Directory
或Location
块中,它告诉httpd使用Subversion的后端,用mod_dav来处理所有的请求。
SVNPath
这个指示指定Subversion版本库文件文件系统的位置,在一个Subversion版本库的配置块里,必须提供这个指示或SVNParentPath
,但不能同时存在。
SVNSpecialURI
指定特定Subversion资源的URI部分(命名空间),缺省是“!svn
”,大多数管理员不会用到这个指示。只有那些必须要在版本库中放一个名字为!svn
的文件时需要设置。如果你在一个已经使用中的服务器上这样修改,它会破坏所有的工作拷贝,你的用户会拿着叉子和火炬追杀你。
SVNReposName
指定Subversion版本库在HTTP GET
请求中使用的名字,这个值会作为所有目录列表(当你用web浏览器察看Subversion版本库时会看到)的标题,这个指示是可选的。
SVNIndexXSLT
目录列表所使用的XSL转化的URI,这个指示可选。
SVNParentPath
指定子目录会是版本库的父目录在文件系统的位置,在一个Subversion版本库的配置块里,必须提供这个指示或SVNPath
,但不能同时存在。
SVNPathAuthz
控制开启和关闭路径为基础的授权,更多细节见svn官网。