环境
宿主机:Windows7 VMware7.1
虚拟机:Fedora12
在Fedora中安装Subversion,作为服务器端;
Windows7中安装TortoiseSVN,作为客户端。
Subversion是一个自由/开源的版本控制系统。支持多种操作系统,可以通过网络访问,也允许客户端与版本库运行在同一台机器上。
Subversion的组件包括:
svn 命令行客户端程序。
svnversion 此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版
本)。
svnlook 直接查看Subversion版本库的工具。
svnadmin 建立、调整和修复Subversion版本库的工具。
svndumpfilter 过滤Subversion版本库转储数据流的工具。
mod_dav_svn Apache HTTP服务器的一个插件,使版本库可以通过网络访问。
svnserve 一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。
svnsync 一个通过网络增量镜像版本库的程序。
安装Subversion
在Fedora上可以用yum包管理器安装:
#yum install subversion
在Subversion的网站(http://subversion.tigris.org)上还有其他操作系统的二进制包,也可以下载源码进行编译。
创建版本库
建立/root/svn目录,作为版本库目录,执行如下命令建立版本库:
# svnadmin create /root/svn
# ls
conf/ db/ format hooks/ locks/ README.txt
导入数据
假设项目源码在/root/terminal目录下,在该文件夹中建立三个子目录:
branches tags trunk
保证branches和tags为空,将源代码全部放在trunk目录下,这三个目录不是必须的,但是subversion的习惯用法。运行svn import命令将其导入版本库中:
现在版本库中已经保存了目录中的数据。但是,直接查看版本库是看不到文件和目录的;它们存放在数据库之中。版本库的虚拟文件系统中则包含了一个名为terminal的顶级目录,其中依此保存了所有的数据。而/root/terminal目录及里面的数据已经与subversion无关了,完全可以将其删除。
检出数据
建立一个空的/root/terminal目录,运行如下命令,将数据检出:
svn checkout file:///root/svn/terminal/trunk /root/terminal
Subversion的版本库可以和客户端运行在同一台机器里,用file:///访问。典型的应用是采用一个单独的服务器,这里使用subversion自带的svnserve。
配置svnserve
安装subversion后, 执行setup,在system server(系统服务)里可以看到svnserve,用空格选中它,系统启动时,svnserve就会自动运行。
用这种方式启动svnserve时,系统执行的是/etc/rc.d/init.d目录下的svnserve脚步,该脚本里定义了args变量,即执行时选择的参数:
args=“--daemon --pid-file=${pidfile} $OPTIONS"
可以看到,svnserve是以守护进程的方式(--daemon)的方式执行的,可以在这里修改参数,加入--root参数,指定svn的虚拟根目录,这样会限制只输出指定目录下的版本库,将/root/svn设为版本库目录:
args=“--daemon --root=/root/svn --pid-file=${pidfile} $OPTIONS
修改后需要重启服务。
配置访问权限
在版本库目录下的conf子目录下有三个文件:
authz passwd svnserve.conf
svnserve.conf文件的[general]部分包括一些变量,他们默认都用#设为注释了,将如下几个变量前面的#和空格去掉:
anon-access = read #匿名用户的权限为可读,如果想禁止匿名用户,设为none
auth-access = write #认证用户的权限为可读可写
password-db = passwd #版本库的用户名和密码存放在passwd文件
其他不需要的变量,不要修改。
passwd文件定义了用户名和密码,格式为:
[username] = [password]
文件的内容如下:
[users]
# harry = harryssecret
# sally = sallyssecret
检出数据
宿主机Windows7为客户端,安装有TortoiseSVN,使用如下URL检出数据:
svn://192.168.65.166/terminal/trunk
参考: