### 快速入门 许多人为“从头到尾”的方式读一本介绍有趣新技术的书感到发愁,这一小节是一个很短的介绍,给许多“实用”的用户一个实战的机会,如果你是一个喜欢通过实验进行学习的用户,以下将告诉你怎么做,相对应,我们给出这本书相关的链接。 如果版本控制或者Subversion和CVS都用到的“拷贝-修改-合并”模型对于你来说是完全的新概念,在进一步阅读之前,你首先要读[第2章 *基本概念*]( "第2章基本概念")。 ### 注意 以下的例子假定你有了**svn**这个客户端程序,也有**svnadmin**这个管理程序,你的**svn**也应该在Berkeley DB的基础上进行编译。为了验证这些,运行**svn --version**,确定ra_local模块存在,如果没有,这个程序不能访问`file://`的URL。 Subversion存储所有版本控制的数据到一个中心版本库,作为开始,新建一个版本库: ~~~ $ svnadmin create /path/to/repos $ ls /path/to/repos conf/ dav/ db/ format hooks/ locks/ README.txt ~~~ 这个命令建立了一个新的目录 `/path/to/repos`,包含了一个Subversion版本库。确定这个目录在本地磁盘上,而*不是*一个网络共享,这个新的目录保存着一些Berkeley DB的数据库文件,你打开后看不到你的已经版本化的文件。更多的版本库创建和维护信息,见第5章[第5章 *版本库管理*]( "第5章版本库管理")。 第二步,建立一些将要导入到版本库的文件与目录,为了以后使用更清楚(见[第4章 *分支与合并*]( "第4章分支与合并")),你的文件应该包括三个顶级子目录,分别是`branches`、`tags`和`trunk`: ~~~ /tmp/project/branches/ /tmp/project/tags/ /tmp/project/trunk/ foo.c bar.c Makefile … ~~~ 一旦你有了树形结构和数据你就可以继续了,使用**svn import**导入数据到版本库(见[“**svn import**”一节]( "svn import")部分): ~~~ $ svn import /tmp/project file:///path/to/repos -m "initial import" Adding /tmp/project/branches Adding /tmp/project/tags Adding /tmp/project/trunk Adding /tmp/project/trunk/foo.c Adding /tmp/project/trunk/bar.c Adding /tmp/project/trunk/Makefile … Committed revision 1. $ ~~~ 现在版本库已经包含你的目录和数据了,注意原先的`/tmp/project`目录没有任何变化;Subversion不管这个,(事实上,你甚至可以任意删除这个目录)。为了处理 版本库的数据,你需要创建一个新的包含数据的“工作拷贝”,一个私人的工作空间。告诉Subversion来“取出”版本库的`trunk`目录: ~~~ $ svn checkout file:///path/to/repos/trunk project A project/foo.c A project/bar.c A project/Makefile … Checked out revision 1. ~~~ 你现在在`project`目录里有了一个版本库的个人拷贝,你可以编辑你的工作备份中的文件,并且提交到版本库。 - 进入到你的工作备份,编辑一个文件的内容。 - 运行**svn diff**来查看你的修改的标准区别输出。 - 运行**svn commit**来提交你的改变到版本库。 - 运行**svn update**将你的工作拷贝与版本库“同步”。 对于你对工作拷贝可做操作的完全教程可以察看[第3章 *指导教程*]( "第3章指导教程")。 目前,你可以选择使你的版本库在网络上可见,可以参考[第6章 *配置服务器*]( "第6章配置服务器"),学习使用不同的服务器以及配置。