1、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
…
2、svn blame — 显示特定文件和URL内嵌的作者和修订版本信息。
格式
svn blame TARGET[@REV]...
含义
显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。
别名
praise、annotate、ann
是否访问版本库:是
选项
--revision (-r) REV
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
--verbose
例子
如希望在测试版本库看到blame标记的 xxx.txt源代码:
$ svn blame http://svn.red-bean.com/repos/test/xxx.txt
3 sally This is a README file.
5 harry You should read this.
3、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
例子
如果希望不检出而察看版本库的xxx.txt的内容:
$ svn cat http://svn.red-bean.com/repos/test/xxx.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!
4、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
--ignore-externals
--config-dir DIR
例子
取出一个工作拷贝到 XXX:
$ svn checkout file:///tmp/repos/test XXX
A XXX/a
A XXX/b
Checked out revision 2.
$ ls
XXX
检出两个目录到两个单独的工作拷贝:
$ 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.
5、svn cleanup — 递归清理工作拷贝。
格式
svn cleanup [PATH...]
含义
递归清理工作拷贝,删除未完成的工作拷贝锁定,并恢复未完成的操作。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。如果因为一些原因,运行其他程序(例如,用户输入或是网络错误)导致一个 svn update 失败,使用 --diff3-cmd 选项可以完全清除你的程序所作的合并,也可以使用 --config-dir 指定任何配置目录,但一般不会经常使用这些选项。
是否访问版本库:否
选项
--diff3-cmd CMD
--config-dir DIR
例子
$ svn cleanup /path/working-copy
如果你没有传递PATH,会使用“.”(即当前目录)。
$ svn cleanup
6、svn commit — 将修改从工作拷贝发送到版本库。
格式
svn commit [PATH...]
含义
将修改从工作拷贝上传到版本库。如果没有使用--file或--message提供提交日志信息,svn会启动编辑器来编写一个提交信息,见“config”的editor-cmd。svn commit will send found lock tokens and release locks on all PATHS committed (recursively) unless --no-unlock is passed.
注意:如果开始了提交且Subversion已经启动编辑器来编辑提交信息,仍可以退出而不会提交修改;如果希望取消提交,只需要退出编辑器但不保存提交信息,Subversion会提示你是选择取消提交、空信息继续还是重新编辑信息。
别名
ci(“check in”的缩写;不是“checkout”的缩写“co”。)
是否访问版本库:是
选项
--message (-m) TEXT
--file (-F) FILE
--quiet (-q)
--no-unlock
--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 4.
提交修改到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.