- SVN简介
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
- SVN中的一些概念 :
(1) repository(源代码库)
源代码统一存放的地方
(2) Checkout (提取)
当你手上没有源代码的时候,你需要从repository checkout一份
(3) Commit (提交)
当你已经修改了代码,你就需要Commit到repository
(4) Update (更新)
当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
- 客户端软件
(1) Windows下常用的客户端软件常用TortoiseSVN。它是一个免费的开源的客户端。 下载地址:http://tortoisesvn.net/downloads.html
(2) 像Myeclipse,也有一些SVN的插件。
- 服务端软件安装
subversion服务器是不需要apache的,但是可以使用apache,视具体情况来选择。
1、如果只要通过file://或svn://来访问,则不需要apache,只安装svn即可,使用svnserve来作为服务。
2、如果你要建立一个可以通过http://或https://来访问的版本库服务器,则你需要使用apache。
(1)通过yum的方式安装不支持apache的SVN服务器
安装SVN软件
[root@test ~]# yum -y install subversion
验证安装的版本:
[root@test ~]# svnserve --version
svnserve, version 1.6.11 (r934486)
compiled Mar 6 2014, 10:49:10
创建SVN版本库目录
[root@test /]# mkdir -p /var/svn/svnrepos
创建版本库
[root@test /]# svnadmin create /var/svn/svnrepos
执行上面的命令以后,会在/var/svn/svnrepos目录下生成如下文件:
[root@test /]# cd /var/svn/svnrepos/
[root@test svnrepos]# ls -l
total 24
drwxr-xr-x. 2 root root 4096 Jul 25 16:39 conf
drwxr-sr-x. 6 root root 4096 Jul 25 16:52 db
-r--r--r--. 1 root root 2 Jul 25 16:24 format
drwxr-xr-x. 2 root root 4096 Jul 25 16:24 hooks
drwxr-xr-x. 2 root root 4096 Jul 25 16:24 locks
-rw-r--r--. 1 root root 229 Jul 25 16:24 README.txt
[root@test conf]# pwd
/var/svn/svnrepos/conf
[root@test conf]# ls
authz passwd svnserve.conf
其中conf文件夹下面有3个文件,作用分别是
Svnserve.conf svn服务配置文件
Passwd 用户名口令文件
Authz 权限配置文件
svnserve.conf 文件, 该文件配置项分为以下5项:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access: 控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
passwd文件用于设置账号和密码
在[users]块中添加用户和密码,格式:帐号=密码,如czb=czb
vi passwd
[users]
# harry = harryssecret
# sally = sallyssecret
czb=czb
authz文件用于设置权限
vi authz
[/]
czb=rw
意思是czb用户对根目录/有读写的权限.
启动svn版本库
svnserve –d –r /var/svn/svnrepos
(2)通过源码的方式安装支持apache的SVN服务器
本测试服务器系统为:centos 6.5 x86_64 ip:192.168.137.138
软件包如下:
apr-1.5.1.tar.gz
apr-util-1.5.3.tar.gz
httpd-2.2.27.tar.gz
subversion-1.7.17.tar.gz
1. 安装相关的安装包
[root@cc ~]# yum -y install gcc openssl openssl-devel zlib zlib-devel
2. 安装apr-1.5.1
[root@cc ~]# tar zxvf apr-1.5.1.tar.gz
[root@cc ~]# cd apr-1.5.1
[root@cc apr-1.5.1]# ./configure
[root@cc apr-1.5.1]# make && make install
[root@cc apr-1.5.1]# cd ..
3. 安装apr-util-1.5.3
[root@cc ~]# tar zxvf apr-util-1.5.3.tar.gz
[root@cc ~]# cd apr-util-1.5.3
[root@cc apr-util-1.5.3]# ./configure --with-apr=/usr/local/apr/
[root@cc apr-util-1.5.3]# make && make install
[root@cc apr-util-1.5.3]# cd ..
4. 安装httpd-2.2.27
[root@cc ~]# tar zxvf httpd-2.2.27.tar.gz
[root@cc ~]# cd httpd-2.2.27
[root@cc httpd-2.2.27]# ./configure \
--prefix=/usr/local/apache \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config \
--enable-modules=so \
--enable-dav \
--enable-maintainer-mode \
--enable-rewrite
[root@cc httpd-2.2.27]# make && make install
5. 安装subversion-1.7.17
[root@cc ~]# tar zxvf subversion-1.7.17.tar.gz
[root@cc ~]# cd subversion-1.7.17
[root@cc subversion-1.7.17]# ./configure \
--prefix=/usr/local/svn \
--with-apxs=/usr/local/apache/bin/apxs \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config \
--with-ssl \
--with-zlib \
--enable-maintainer-mode
[root@cc subversion-1.7.17]# make && make install
确认是否安装成功
[root@cc subversion-1.7.17]# /usr/local/svn/bin/svnserve --version
svnserve, version 1.7.17 (r1591372)
compiled Jul 25 2014, 22:49:59
查看模块是否安装成功
[root@cc modules]# ls /usr/local/apache/modules/
httpd.exp mod_authz_svn.so mod_dav_svn.so mod_dontdothat.so
6. 建立版本库
[root@cc ~]# mkdir -p /svn/project/www
[root@cc ~]# /usr/local/svn/bin/svnadmin create /svn/project/www
查看是否建立成功
[root@cc ~]# ls /svn/project/www/
conf db format hooks locks README.txt
7. 修改/svn/project
[root@cc ~]#chown -R apache:apache /svn/project
8. 配置apache支持svn
[root@cc ~]# vi /usr/local/apache/conf/httpd.conf
最后添加如下代码:
<Location /svn>
DAV svn
SVNParentPath /svn/project
AuthType Basic
AuthName "Hello welcome to here"
AuthUserFile /svn/passwd
AuthzSVNAccessFile /svn/auth.conf
Require valid-user
</Location>
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
User daemon
Group daemon
修改为
User apache
Group apache
添加
#ServerName www.example.com:80
ServerName 192.168.137.138:80 #此ip为服务器IP地址
启动apache
[root@cc ~]# /usr/local/apache/bin/apachectl -k start
打开浏览器访问http://192.168.137.138/svn/www 会提示输入用户名密码
9. 配置svn权限配置(authz.conf的配置)
1) 添加用户:
[root@cc ~]# /usr/local/apache/bin/htpasswd -c /svn/passwd czb
New password:
Re-type new password:
Adding password for user czb
此次建立了一个账号为czb,密码也为czb的账号
第二次添加用户可以不加参数-c
[root@cc ~]# /usr/local/apache/bin/htpasswd /svn/passwd test
New password:
Re-type new password:
Adding password for user test
建立了一个账号test,密码也为test的账号
2) 权限分配:
[root@cc ~]# vi /svn/auth.conf
[groups] /*这个表示群组设置
Admin=czb,test /*这个表示admin群组里的成员 czb,test
Develop=u1,u2 /*这个表示Develop群组里的成员 u1,u2
[www:/] /*这表示,仓库www的根目录下的访问权限
czb = rw /*www仓库czb用户具有读和写权限
test = r /* www仓库test用户具只有读权限
@develop=rw /*这表示 群 develop的成员都具有读写权限
[/] /*这个表示在所有仓库的根目录下
* = r /*这个表示对所有的用户都具有读权限
注意:在编辑authz.conf文件时,所有行都必须要顶头写,不能有缩行出现,否则会报错:"Access denied: ‘‘czb‘‘ ",里面的内容可以根据自己的需要自行添加
10. 重启apache服务和启动svn服务
重启apache服务
[root@cc ~]# /usr/local/apache/bin/apachectl -k restart
启动svn服务
[root@cc ~]# /usr/local/svn/bin/svnserve -d -r /svn/project/www