许多人为“从头到尾”的方式读一本介绍有趣新技术的书感到发愁,这一小节是一个很短的介绍,给许多“实用”的用户一个实战的机会,如果你是一个喜欢通过实验进行学习的用户,以下将告诉你怎么做,相对应,我们给出这本书相关的链接。
如果版本控制或者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 章 分支与合并),你的文件应该包括三个顶级子目录,分别是branches
、tags
和trunk
:
/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 章 配置服务器,学习使用不同的服务器以及配置。