1、svn add — 添加文件、目录或符号链。
格式
<wbr><wbr>svn add PATH...</wbr></wbr>
含义
<wbr><wbr>添加文件、目录或符号链到本地工作拷贝,且预定添加到版本库。它们会在下次提交上传并添加到版本库。如果在提交之前改变了主意,可以使用<strong>svn</strong> revert取消。此命令不访问版本库。<br><strong>选项</strong><br><wbr><wbr>--targets FILENAME</wbr></wbr></wbr></wbr>
<wbr> --non-recursive (-N)</wbr>
<wbr> --quiet (-q)</wbr>
<wbr> --config-dir DIR</wbr>
<wbr> --auto-props</wbr>
<wbr><wbr>--no-auto-props</wbr></wbr>
<wbr> --force</wbr>
例子
<wbr> 添加一个文件到工作拷贝:</wbr>
<wbr><wbr><wbr> $ svn add foo.c<wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> foo.c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr> 添加一个目录:svn add缺省的行为方式是递归的:<br><wbr><wbr><wbr> $ svn add testdir</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> testdir</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> testdir/a</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> testdir/b</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> testdir/c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> testdir/d</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> 你可以只添加一个目录而不包括其内容:</wbr></wbr>
<wbr><wbr><wbr> $ svn add --non-recursive otherdir</wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> otherdir</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
通常情况下,命令 svn add * 会忽略所有已经在版本控制之下的目录。有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的--force递归到版本化的目录下:
<wbr><wbr><wbr> $ svn add * --force</wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> foo.c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> somedir/bar.c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> A<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> otherdir/docs/baz.doc</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> …</wbr></wbr></wbr>
<wbr></wbr>
2、svn blame — 显示特定文件和URL内嵌的作者和修订版本信息。
格式
<wbr> svn blame TARGET[@REV]...</wbr>
含义
<wbr> 显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。</wbr>
别名
<wbr> praise、annotate、ann</wbr>
是否访问版本库:是
选项
<wbr> --revision (-r) REV</wbr>
<wbr> --username USER</wbr>
<wbr><wbr>--password PASS</wbr></wbr>
<wbr> --no-auth-cache</wbr>
<wbr> --non-interactive</wbr>
<wbr> --config-dir DIR</wbr>
<wbr> --verbose</wbr>
例子
<wbr> 如希望在测试版本库看到blame标记的 xxx.txt源代码:</wbr>
<wbr><wbr> $ svn blame <a href="http://svn.red-bean.com/repos/test/xxx.txt"> http://svn.red-bean.com/repos/test/xxx.txt</a><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> 3<wbr><wbr><wbr><wbr><wbr><wbr> sally This is a README file.</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> 5<wbr><wbr><wbr><wbr><wbr><wbr> harry You should read this.</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
3、svn cat — 输出特定文件或URL的内容。
格式
<wbr> svn cat TARGET[@REV]...</wbr>
含义
输出特定文件或URL的内容。列出目录的内容可以使用 svn list。
是否访问版本库:是
选项
<wbr> --revision (-r) REV</wbr>
<wbr> --username USER</wbr>
<wbr> --password PASS</wbr>
<wbr> --no-auth-cache</wbr>
<wbr> --non-interactive</wbr>
<wbr> --config-dir DIR</wbr>
例子
<wbr> 如果希望不检出而察看版本库的xxx.txt的内容:</wbr>
<wbr><wbr> $ svn cat <a href="http://svn.red-bean.com/repos/test/xxx.txt">http://svn.red-bean.com/repos/test/xxx.txt</a></wbr></wbr>
<wbr><wbr> This is a README file.</wbr></wbr>
<wbr><wbr> You should read this.</wbr></wbr>
<wbr> 如果你的工作拷贝已经过期(或者你有本地修改),且希望察看工作拷贝的HEAD修订版本的一个文件,若给定了一个路径,<strong>svn</strong> cat会自动取得HEAD的修订版本:<br><wbr><wbr> $ cat foo.c</wbr></wbr></wbr>
<wbr><wbr> This file is in my local working copy and has changes that I've made.</wbr></wbr>
<wbr><wbr> $ svn cat foo.c</wbr></wbr>
<wbr><wbr> Latest revision fresh from the repository!</wbr></wbr>
<wbr></wbr>
4、svn checkout — 从版本库取出一个工作拷贝。
格式
<wbr> svn checkout URL[@REV]... [PATH]</wbr>
含义
<wbr> 从版本库取出一个工作拷贝,如果省略PATH,URL的基名称会作为目标,如果给定多个URL,每一个都会检出到PATH的子目录,使用URL基名称的子目录名称。此命令会创建一个工作拷贝。</wbr>
别名
<wbr> co</wbr>
是否访问版本库:是
选项
<wbr> --revision (-r) REV</wbr>
<wbr> --quiet (-q)</wbr>
<wbr><wbr>--non-recursive (-N)</wbr></wbr>
<wbr> --username USER</wbr>
<wbr> --password PASS</wbr>
<wbr> --no-auth-cache</wbr>
<wbr> --non-interactive</wbr>
<wbr> --ignore-externals</wbr>
<wbr> --config-dir DIR</wbr>
例子
<wbr><wbr><wbr><wbr><wbr><wbr> 取出一个工作拷贝到 XXX:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn checkout <a href="file://tmp/repos/test">file:///tmp/repos/test</a> XXX</wbr></wbr>
<wbr><wbr> A<wbr><wbr> XXX/a</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> XXX/b</wbr></wbr></wbr></wbr>
<wbr><wbr> Checked out revision 2.</wbr></wbr>
<wbr><wbr> $ ls</wbr></wbr>
<wbr><wbr> XXX</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 检出两个目录到两个单独的工作拷贝:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn checkout <a href="file://tmp/repos/test">file:///tmp/repos/test</a><wbr><a href="file://tmp/repos/quiz">file:///tmp/repos/quiz</a></wbr></wbr></wbr>
<wbr><wbr><wbr>A<wbr><wbr> test/a</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/b</wbr></wbr></wbr></wbr>
<wbr><wbr> Checked out revision 2.</wbr></wbr>
<wbr><wbr> A<wbr><wbr> quiz/l</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> quiz/m</wbr></wbr></wbr></wbr>
<wbr><wbr> Checked out revision 2.</wbr></wbr>
<wbr><wbr> $ ls</wbr></wbr>
<wbr><wbr> quiz<wbr><wbr> test</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 检出两个目录到两个单独的工作拷贝,但是将两个目录都放到working-copies:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn checkout <a href="file://tmp/repos/test">file:///tmp/repos/test</a><wbr><wbr><a href="file://tmp/repos/quiz">file:///tmp/repos/quiz</a> working-copies</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> working-copies/test/a</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> working-copies/test/b</wbr></wbr></wbr></wbr>
<wbr><wbr> Checked out revision 2.</wbr></wbr>
<wbr><wbr> A<wbr><wbr> working-copies/quiz/l</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> working-copies/quiz/m</wbr></wbr></wbr></wbr>
<wbr><wbr> Checked out revision 2.</wbr></wbr>
<wbr><wbr> $ ls</wbr></wbr>
<wbr><wbr> working-copies</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> 如果你打断一个检出(或其它打断检出的事情,如连接失败。),你可以使用同样的命令重新开始或者是更新不完整的工作拷贝:</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn checkout <a href="file://tmp/repos/test">file:///tmp/repos/test</a> test</wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/a</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/b</wbr></wbr></wbr></wbr>
<wbr><wbr> ^C</wbr></wbr>
<wbr><wbr> svn: The operation was interrupted</wbr></wbr>
<wbr><wbr> svn: caught SIGINT</wbr></wbr>
<wbr><wbr> $ svn checkout <a href="file://tmp/repos/test">file:///tmp/repos/test</a> test</wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/c</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/d</wbr></wbr></wbr></wbr>
<wbr><wbr> ^C</wbr></wbr>
<wbr><wbr><wbr>svn: The operation was interrupted</wbr></wbr></wbr>
<wbr><wbr> svn: caught SIGINT</wbr></wbr>
<wbr><wbr> $ cd test</wbr></wbr>
<wbr><wbr> $ svn update</wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/e</wbr></wbr></wbr></wbr>
<wbr><wbr> A<wbr><wbr> test/f</wbr></wbr></wbr></wbr>
<wbr><wbr> Updated to revision 3.</wbr></wbr>
<wbr></wbr>
5、svn cleanup — 递归清理工作拷贝。
格式
<wbr> svn cleanup [PATH...]</wbr>
含义
<wbr> 递归清理工作拷贝,删除未完成的工作拷贝锁定,并恢复未完成的操作。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。如果因为一些原因,运行其他程序(例如,用户输入或是网络错误)导致一个 <strong>svn</strong> update 失败,使用 --diff3-cmd 选项可以完全清除你的程序所作的合并,也可以使用 --config-dir 指定任何配置目录,但一般不会经常使用这些选项。<br><strong>是否访问版本库:</strong>否</wbr>
选项
<wbr> --diff3-cmd CMD</wbr>
<wbr> --config-dir DIR</wbr>
例子
<wbr> $ svn cleanup /path/working-copy<br><wbr><wbr><wbr><wbr><wbr> 如果你没有传递PATH,会使用“.”(即当前目录)。<br><wbr> $ svn cleanup</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr></wbr>
6、svn commit — 将修改从工作拷贝发送到版本库。
格式
<wbr> svn commit [PATH...]</wbr>
含义
<wbr> 将修改从工作拷贝上传到版本库。如果没有使用--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.<br><wbr> 注意:如果开始了提交且Subversion已经启动编辑器来编辑提交信息,仍可以退出而不会提交修改;如果希望取消提交,只需要退出编辑器但不保存提交信息,Subversion会提示你是选择取消提交、空信息继续还是重新编辑信息。</wbr></wbr>
别名
<wbr><wbr>ci(“check in”的缩写;不是“checkout”的缩写“co”。)</wbr></wbr>
是否访问版本库:是
选项
<wbr> --message (-m) TEXT</wbr>
<wbr> --file (-F) FILE</wbr>
<wbr> --quiet (-q)</wbr>
<wbr> --no-unlock</wbr>
<wbr> --non-recursive (-N)</wbr>
<wbr> --targets FILENAME</wbr>
<wbr> --force-log</wbr>
<wbr> --username USER</wbr>
<wbr> --password PASS</wbr>
<wbr> --no-auth-cache</wbr>
<wbr> --non-interactive</wbr>
<wbr> --encoding ENC</wbr>
<wbr> --config-dir DIR</wbr>
例子
<wbr><wbr><wbr><wbr><wbr><wbr> 使用命令行提交包含日志信息的文件修改,当前目录(“.”)是没有说明的目标路径:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn commit -m "added howto section."</wbr></wbr>
<wbr><wbr> Sending<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> a</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> Transmitting file data .</wbr></wbr>
<wbr><wbr> Committed revision 4.</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 提交修改到foo.c(在命令行明确指明),并且msg文件中保存了提交信息:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn commit -F msg foo.c</wbr></wbr>
<wbr><wbr> Sending<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> foo.c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> Transmitting file data .</wbr></wbr>
<wbr><wbr> Committed revision 5.</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 如果希望在--file选项中使用在版本控制之下的文件作为参数,你需要使用--force-log选项:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn commit --file file_under_vc.txt foo.c</wbr></wbr>
<wbr><wbr> svn: The log message file is under version control</wbr></wbr>
<wbr><wbr> svn: Log message file is a versioned file; use '--force-log' to override</wbr></wbr>
<wbr><wbr> $ svn commit --force-log --file file_under_vc.txt foo.c</wbr></wbr>
<wbr><wbr><wbr>Sending<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> foo.c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> Transmitting file data .</wbr></wbr>
<wbr><wbr> Committed revision 6.</wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr> 提交已经预定要删除的文件:</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> $ svn commit -m "removed file 'c'."</wbr></wbr>
<wbr><wbr> Deleting<wbr><wbr><wbr><wbr><wbr><wbr><wbr> c</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr> Committed revision 7.</wbr></wbr>