svn在团队合作中是被较为普遍地使用的,它不但可以用于团队中的代码、文档等的版本控制,从而实现团队成员之间同步合作开发,也可以用于将新版本的代码更新到正式环境的生产服务器上(这样如果出现较大的问题时,可以选择将代码恢复到上一版本的代码)。

svn的server安装有两种方式,一种是使用Linux的软件包管理器(如Fedora和RedHat以及CentOS中的yum)进行二进制包安装,另一种是使用源码编译安装。因为第二种源码编译安装,需要考虑到挺多的依赖包的安装,所以比较麻烦,这里我简单说下使用yum安装以及配置方法。关于源码编译安装,安装方法见 http://svn.apache.org/repos/asf/subversion/trunk/INSTALL ,源码包下载地址为 http://subversion.apache.org/download 。(可使用wget http://www.eu.apache.org/dist/subversion/subversion-1.9.2.tar.gz)

安装步骤如下:

1. yum命令安装

# yum install subversion  ;只需执行这一步svn就安装完成了。

# yum install  mod_dav_svn

(注:通常我们是通过svn://协议来访问远端的仓库数据的,但是其实Subversion的设计包括了一个抽象的网络层,这意味着版本库是可以通过各种服务器进程访问的。理论上来会说,Subversion可以使用无限数量的网络协议来实现,甚至可以直接用perl利用相关的接口来编写自定义协议。但日常中,用得最多的就是svn://协议,利用mod_dav_svn模块通过Apache服务进行访问。所以如果不打算使用http协议来访问Subversion,那么mod_dav_svn模块就无须安装。如果需要使用http协议访问Subversion,可以参考 http://www.uml.org.cn/pzgl/200908078.asp

2. 建立版本控制库目录

# mkdir -p /var/svn/default-repos

(注:这里的版本库目录与subversion安装目录是不一样的)

3. 建立版本库

#svnadmin create /var/svn/default-repos 

(注:执行此命令后将会自动在default-repos目录下生成必须的配置文件)

4. 配置该版本库的配置文件

#ll /var/svn/default-repos/conf

-rw-r--r-- 1 root root 1080 Nov 16 23:44 authz
-rw-r--r-- 1 root root  309 Nov 16 23:44 passwd
-rw-r--r-- 1 root root 2279 Nov 16 23:44 svnserve.conf

总共有authz(配置用户权限)、passwd(设置用户列表) 和 svnserve.conf(svnserver的配置) 三个配置文件

# vi /var/svn/default-repos/conf/svnserve.conf

[general]
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = passwd # 指明密码文件路径
authz-db = authz # 访问控制文件
realm = /var/svn/default-repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错。

#vi /var/svn/default-repos/conf/passwd

[users]
username1 = password1
username2 = password2
可以添加多个,此为用户名密码对。

vi /var/svn/default-repos/conf/authz

包括只读r,读写rw。没有列出的用户,则不允许访问。还可以对用户分组,具体请参考svn手册,以下是简单例子:
对仓库repos根目录权限设置
[repos:/]
username1 = rw
username2 = r

(注:以上为一个版本库的配置,如果需要对创建其他版本库,则按照以上方式创建一个新目录并配置为其配置相关选项即可)

5. 使用import指令导入文件

#svn import /root file:///var/svn/default-repos

(注:新建的版本库是空的,需要使用import指令导入文件,上面的语句将/root 目录下的文件导入版本库中

执行这个指令可能会出现这个错误:

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found

问题原因是: 
没有设置svn编辑器的环境变量,主要是import、commit中填写comment(即导入和提交更改需要记录的信息)要用到。
解决方法如下

#vi /etc/bashrc 
在最后加入:export SVN_EDITOR=vim,保存
# source /etc/bashrc   #使更改立刻生效。 

重新执行 svn import /root file:///var/svn/default-repos,弹出编辑框,将对版本库做的更改输入后保存即可(同vi/vim的操作一致)。保存后退出即自动提交。或者直接执行 svn import /root file:///var/svn/default-repos -m "注释"。

6. 启动subversion 

#svnserve -d -r /var/svn/default-repos –listen-port 8081

(注:--listen-port 给定端口号 这个配置是可选的,subversion默认使用3690端口号,但是当使用多个版本库时,就需要给各个版本库指定端口号了)

7. 导出版本库内容

#svn checkout svn://ip[:port]/repos


至此,subversion就已经安装并配置完毕了,有些小细节需要读者在安装的时候注意就OK了。另外,如果需要在windows上使用版本控制,那么请安装subversion的windows客户端,具体可到 http://tortoisesvn.net/downloads.html 下载。详细的使用方法就google一下或者找度娘吧。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐