快速入门

许多人为“从头到尾”的方式读一本介绍有趣新技术的书感到发愁,这一小节是一个很短的介绍,给许多“实用”的用户一个实战的机会,如果你是一个喜欢通过实验进行学习的用户,以下将告诉你怎么做,相对应,我们给出这本书相关的链接。

如果版本控制或者Subversion和CVS都用到的“拷贝-修改-合并”模型对于你来说是完全的新概念,在进一步阅读之前,你首先要读第 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 章 版本库管理

第二步,建立一些将要导入到版本库的文件与目录,为了以后使用更清楚(见第 4 章 分支与合并),你的文件应该包括三个顶级子目录,分别是branchestagstrunk

/tmp/project/branches/
/tmp/project/tags/
/tmp/project/trunk/
               foo.c
               bar.c
               Makefile
               …

一旦你有了树形结构和数据你就可以继续了,使用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 章 指导教程

目前,你可以选择使你的版本库在网络上可见,可以参考第 6 章 配置服务器,学习使用不同的服务器以及配置。