3. 初始化检出

大多数时候,你会使用 checkout 从版本库取出一个新拷贝,开始使用 Subversion,这样会在本机创建一个项目的本地拷贝,这个拷贝包括了命令行指定版本库中的 顶点(最新的)版本:

$ svn checkout http://svn.collab.net/repos/svn/trunk
A    trunk/Makefile.in
A    trunk/ac-helpers
A    trunk/ac-helpers/install.sh
A    trunk/ac-helpers/install-sh
A    trunk/build.conf
…
Checked out revision 8810.

尽管上面的例子取出了 trunk 目录,你也完全可以通过输入特定 URL 取出任意深度的子目录:

$ svn checkout \
      http://svn.collab.net/repos/svn/trunk/subversion/tests/cmdline/
A    cmdline/revert_tests.py
A    cmdline/diff_tests.py
A    cmdline/autoprop_tests.py
A    cmdline/xmltests
A    cmdline/xmltests/svn-test.sh
…
Checked out revision 8810.

因为 Subversion 使用拷贝-修改-合并模型,而不是锁定-修改-解锁模型(见第 2 节 “版本模型”),你可以在工作副本中开始修改的目录和文件,你的工作副本和你的系统中的其它文件和目录完全一样,你可以编辑并改变它,移动它,也可以完全的删掉它,把它忘了。

[警告] 警告

因为你的工作副本同你系统上的文件和目录没有任何区别,你可以随意修改文件,但是你必须告诉 Subversion 你做的其他任何事。例如,你希望拷贝或移动工作副本的一个文件,你应该使用 svn copy 或者 svn move,而不要使用操作系统的拷贝移动命令,我们会在本章后面详细介绍。

除非你准备好了提交一个新文件或目录,或改变了已存在的,否则没有必要通知Subversion你做了什么。

因为你可以使用版本库的 URL 作为唯一参数取出一个工作副本,你也可以在版本库 URL 之后指定一个目录,这样会将你的工作目录放到你的新目录,举个例子:

$  svn checkout http://svn.collab.net/repos/svn/trunk subv
A    subv/Makefile.in
A    subv/ac-helpers
A    subv/ac-helpers/install.sh
A    subv/ac-helpers/install-sh
A    subv/build.conf
…
Checked out revision 8810.

这样将把你的工作副本放到 subv,而不是和前面那样放到 trunk,如果 subv 不存在,将会自动创建。

3.1. 禁用密码缓存

当你执行的 Subversion 命令需要认证时,缺省情况下 Subversion 会在磁盘缓存认证信息。在某些系统中,Subversion 不能加密你的认证数据。你会被询问,是否缓存你的明文密码到磁盘。你可以选择缓存,这样做比较方便,在接下来的操作中你就可以不必输入密码。但如果你很在乎明文密码缓存,不想每次都被询问,你可以永久关闭明文缓存,或者针对每个服务器设置。

To permanently disable caching of passwords in plaintext, you can add the line store-plaintext-passwords = no to the global section in the servers configuration file on the local machine. To disable caching of plaintext passwords for a particular server, use the same setting in the appropriate group section in the servers configuration file. See 第 1.3 节 “配置选项” in 第 7 章 定制你的 Subversion 体验 for details.

You can also disable caching of authentication credentials entirely, regardless of whether the credentials are stored in encrypted form or not.

在某个命令中关闭密码缓存,可以使用 --no-auth-cache 选项,如果希望永久关闭缓存,可以在本机 Subversion 的配置文件中增加 store-passwords = no 这一行,详情参见第 11.2 节 “客户端凭证缓存”

3.2. 认证为其它用户

因为 Subversion 认证缓存是缺省设置(包含用户名和密码),用来记住上一次修改工作副本的人非常方便。但是有时候会不好用—特别是如果你使用的是共享工作副本,例如系统配置目录,或者是 WEB 服务器文档目录。在这种情况下,你只需要为命令行传递 --username 选项,Subversion 就会尝试使用该用户认证,如果需要也提示你输入密码。