Subversion for linux

安装(centos下yum即可方便的完成安装)
# yum install subversion

 

yum install apr apr-util httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

测试安装是否成功:
# svnserve --version      回车显示版本说明安装成功

建立版本库
# mkdir -p /myhome/env/svn/repos/truck/lcb              创建svn数据目录(目录可自行制定)
# svnadmin create /myhome/env/svn/repos/truck/lcb                  lcb就是版本库的名字,可以改变!

配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)

#每个版本库创建之后都会生成svnserve.conf主配文件
# vim /myhome/env/svn/repos/truck/lcb/conf/svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = /myhome/env/svn/repos/truck/lcb/conf/passwd
authz-db = /myhome/env/svn/repos/truck/lcb/conf/authz
realm = kuming

# mkdi /myhome/env/svn/repos/conf
# vim /myhome/env/svn/repos/conf/passwd      //svn用户配置文件

[users]
user1 = password1
user2 = password2
user3 = password3
user4 = password4

# vim /myhome/env/svn/repos/conf/authz      //svn权限控制配置文件

[groups] #设置组
group1 = user1,user2 #多用户用逗号隔开

[/] #根目录权限设置(就是“ kuming”这个文件夹)
user3 = rw #用户1权限是:可读写
user4 = r #用户2权限是:可读,不可写
user = #什么都没写代表没有任何权限

@group1 = rw #设置组权限

[kuming:/123] #设置根目录下“123”文件夹的权限
#说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN
#然后创建一个文件夹“123”。

启动服务器
# svnserve -d -r /myhome/env/svn/repos
-d表示以daemon方式(后台运行)运行
-r  /myhome/env/svn/repos/truck/lcb指定根目录是 /myhome/env/svn/repos/truck/lcb
关闭SVN 服务器
# killall svnserve

# ps aux | grep svnserve    查看服务,端口:3690

客户端使用的软件是TortoiseSVN
浏览方法:
打开版本库浏览器输入:svn://ip-addr/lcb/文件夹名

下面是随便折腾一个小脚本用来管理服务器的启动、重启、停止等操作
# vim svn
# chmod +x svn

#!/bin/bash
case "$1" in
start)
svnserve -d -r /myhome/env/svn/repos/truck/lcb
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server Already Runnning. Port:3690"
else
echo "SVN Server Does Not Start"
fi
;;
reload)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
if [ $svnport -eq 3690 ]
then
killall svnserve && svnserve -d -r /svndata
echo "Reload OK"
else
echo "SVN Server Is Not Running"
fi
;;
stop)
killall svnserve
echo "SVN Server Has Been Stopped"
;;
status)
svnport=`netstat -natp | grep svnserve | awk -F: '{print $4}' | awk 'NR==1'`
pid=`ps aux | grep svnserve | grep -v "grep" | awk '{print $2}'`
if [ $svnport -eq 3690 ]
then
echo "SVN Server (pid:$pid) 正在运行..."
else
echo "SVN Server 停止运行..."
fi
;;
*)
echo "$0: Usage: $0 {start|status|stop|reload}"
exit 1
;;
esac

 

一,Subversion有两种运行方式

一种是基于Apache Http Server,另外一种是Subversion Standalone Server。

以下是基于httpd的svn的安装

二,安装svn

yum install  subversion mod_dav_svn

1),确定已经安装了svn模块:mod_dav_svn

[root@svn zhangying]# cd /etc/httpd/modules/
[root@svn modules]# ls |grep svn
mod_authz_svn.so
mod_dav_svn.so
[root@svn modules]#

2),看一下svn是否已安装成功

[root@svn modules]# svn --version
svn, version 1.4.2 (r22196)
compiled Aug 10 2009, 18:00:04

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme

三,创建仓库,修改svn配置文件

1),加载模块

[root@svn conf.d]#cd /etc/httpd/conf.d

[root@svn conf.d]# vi subversion.conf

添加以下二行

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

2),创建仓库,以及仓库目录的设置

# mkdir -p /var/www/svn

# cd /var/www/svn

# svnadmin create test

# chown -R apache.apache test

# vi /etc/httpd/conf.d/subversion.conf

<Location /svn>
DAV svn
#注意,下面的路径,子文件夹名不能和父文件名重复,不然就会出问题

SVNParentPath /myhome/env/svn/repos/truck/
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
AuthType Basic
AuthName "Subversion repository"
AuthzSVNAccessFile  /myhome/env/svn/repos/conf/authz.conf
AuthUserFile  /myhome/env/svn/repos/conf/authfile
Require valid-user
#   </LimitExcept>
</Location>

 

 #SVN模块加载
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_module modules/mod_dav.so  //如果apache已加载, 要去掉本行。
LoadModule authz_svn_module modules/mod_authz_svn.so#资源配置(如果多个项目, 共用一套验证, 下面配置就可以, 不然需要每个项目组分开建)
<Location /svn>
   DAV svn
   SVNParentPath /var/repos #svn父目录
   AuthzSVNAccessFile /var/repos/config/authz.conf #启用目录级别授权, 权限配置文件
   AuthType Basic #连接类型设置
   AuthName "Subversion  Repository" #连接框提示
   AuthUserFile /var/repos/config/authfile #用户配置文件
   Satisfy Any #表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和 Require的条件,而Any则是满足其中之一即可。这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。若没有这句话,则无论svnauthz中是否加入了 "*=r"的写法,匿名用户都是无法访问的。
   #<LimitExcept GET PROPFIND OPTIONS REPORT>    #允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用, 此选项没试过。
   Require valid-user #采用何种认证
</Location>

你可能感兴趣的:(subversion)