This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.
大多数时候, 用户开始使用仓库是通过执行 检出 (checkout) 命令. 检出仓库中的目录将会在用户的 本地主机上创建一个该目录的工作副本. 除非特意指定, 否则这个副本将包 含仓库最新版本的数据:
$ svn checkout http://svn.example.com/svn/repo/trunk A trunk/README A trunk/INSTALL A trunk/src/main.c A trunk/src/header.h … Checked out revision 8810. $
上面的例子检出的是主干目录, 但用户也可以轻易地检出更深层的子目录, 只需要在检出命令的参数中写上子目录对应的 URL 即可:
$ svn checkout http://svn.example.com/svn/repo/trunk/src A src/main.c A src/header.h A src/lib/helpers.c … Checked out revision 8810. $
因为 Subversion 用的是 复制-修改-合并 模型, 而非 加锁-修改-解锁 (见 “版本控制模型”一节), 所以用户马上就可以修改 工作副本里的文件与目录. 工作副本就像一个普通目录, 用户可以编辑或 重命名里面的文件, 甚至可以删除整个工作副本.
警告 | |
---|---|
虽然工作副本 “像一个普通目录”, 用户可以按照自己 的意愿编辑里面的文件, 但是其他事情必须告诉给 Subversion. 例如, 如果 用户想要复制或移动工作副本中的某个文件或目录, 必须使用 svn copy 或 svn move, 而不是 操作系统提供的复制与移动命令. 关于它们的更多内容会在后面讲到. |
除非用户准备提交修改, 否则不需要通知 Subversion 服务器你做了哪些 修改.
在上面的两个例子中, Subversion 在本地创建的目录名是检出命令中 URL 参数的最后一个分量. 如果用户只向 svn checkout 提供了 URL 参数, 那么根据最后一个分量来创建目录对用户来说就比较方便. 不过 Subversion 客户端命令行工具也允许用户自己指定一个目录名, 例如:
$ svn checkout http://svn.example.com/svn/repo/trunk my-working-copy A my-working-copy/README A my-working-copy/INSTALL A my-working-copy/src/main.c A my-working-copy/src/header.h … Checked out revision 8810. $
如果用户指定的本地目录不存在, svn checkout 会自动创建该目录.