您的位置:首页 > 运维架构 > Linux

SVN学习笔记一——安装配置

2016-09-01 14:59 639 查看
关于SVN的描述网上已经有很多了,是一个开源代码版本控制系统,也是众多中小公司内部使用的一款基于代码管理的软件,这里摘抄百度百科的两段说明如下。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
CentOS上安装SVN其实就很简单了,无论是RPM还是yum,这里使用yum安装。
rpm -qa subversion
yum install subversion -y
按照很多教程的说法,把SVN的数据文件和密码权限等文件分开存放。

[root@mylinux ~]# mkdir -p /opt/svndata
[root@mylinux ~]# mkdir -p /opt/svnpasswd
[root@mylinux ~]# svnserve -d -r /opt/svndata
[root@mylinux ~]# ps -ef|grep svn
root       1068      1  0 12:14 ?        00:00:00 svnserve -d -r /opt/svndata
root       1070    995  0 12:14 pts/0    00:00:00 grep svn
[root@mylinux ~]# netstat -lnt|grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN
[root@mylinux ~]# svnadmin create /opt/svn
svndata/   svnpasswd/
[root@mylinux ~]# svnadmin create /opt/svndata/idc
[root@mylinux ~]# tree /opt/svndata/idc/
/opt/svndata/idc/
├── conf
│   ├── authz
│   ├── passwd
│   └── svnserve.conf
├── db
│   ├── current
│   ├── format
│   ├── fsfs.conf
│   ├── fs-type
│   ├── min-unpacked-rev
│   ├── rep-cache.db
│   ├── revprops
│   │   └── 0
│   │       └── 0
│   ├── revs
│   │   └── 0
│   │       └── 0
│   ├── transactions
│   ├── txn-current
│   ├── txn-current-lock
│   ├── txn-protorevs
│   ├── uuid
│   └── write-lock
├── format
├── hooks
│   ├── post-commit.tmpl
│   ├── post-lock.tmpl
│   ├── post-revprop-change.tmpl
│   ├── post-unlock.tmpl
│   ├── pre-commit.tmpl
│   ├── pre-lock.tmpl
│   ├── pre-revprop-change.tmpl
│   ├── pre-unlock.tmpl
│   └── start-commit.tmpl
├── locks
│   ├── db.lock
│   └── db-logs.lock
└── README.txt
10 directories, 28 files
[root@mylinux ~]# sed -i '/anon-access/s/# //' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/anon-access/s/read/none/' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/auth-access/s/# //' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/password-db =/s/# //' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/password-db =/s/passwd/\/opt\/svnpasswd\/passwd/' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/authz-db =/s/# //' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# sed -i '/authz-db =/s/authz$/\/opt\/svnpasswd\/authz/' /opt/svndata/idc/conf/svnserve.conf
[root@mylinux ~]# cat /opt/svndata/idc/conf/svnserve.conf |grep -v "#"|grep -v "^$"
[general]
anon-access = none
auth-access = write
password-db = /opt/svnpasswd/passwd
authz-db = /opt/svnpasswd/authz
[sasl]
[root@mylinux ~]# cp /opt/svndata/idc/conf/{passwd,authz} /opt/svnpasswd/
[root@mylinux ~]# chmod 600 /opt/svnpasswd/{authz,passwd}
[root@mylinux ~]# ll /opt/svnpasswd
total 8
-rw------- 1 root root 1080 Sep  1 12:33 authz
-rw------- 1 root root  309 Sep  1 12:33 passwd
[root@mylinux svnpasswd]# sed -i '/^# sally/atest01 = 123456' passwd
[root@mylinux svnpasswd]# sed -i '/^test01/atest02 = 654321' passwd
[root@mylinux svnpasswd]# cat passwd |grep -v "#"|grep -v "^$"
[users]
test01 = 123456
test02 = 654321
[root@mylinux svnpasswd]# echo -e "[idc:/]\ntest01 = rw\ntest02 = r" >>authz
[root@mylinux svnpasswd]# tail -3 authz
[idc:/]
test01 = rw
test02 = r
[root@mylinux svnpasswd]# /etc/init.d/svnserve stop
[root@mylinux svnpasswd]# ps -ef|grep svn
root       1068      1  0 12:14 ?        00:00:00 svnserve -d -r /opt/svndata
root       1491    995  0 13:21 pts/0    00:00:00 grep svn
[root@mylinux svnpasswd]# pkill svnserve
[root@mylinux svnpasswd]# ps -ef|grep svn
root       1494    995  0 13:22 pts/0    00:00:00 grep svn
[root@mylinux svnpasswd]# svnserve -d -r /opt/svndata
[root@mylinux svnpasswd]# ps -ef|grep svnserve|grep -v grep
root       1496      1  0 13:22 ?        00:00:00 svnserve -d -r /opt/svndata
[root@mylinux svnpasswd]# netstat -lnt|grep svnserve
[root@mylinux svnpasswd]# netstat -tunlp|grep svnserve
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      1496/svnserve


整个安装过程很简单,可以使用shell脚本安装,当然手工执行也可以接受,就不再赘述了。但是,启动SVN之后发现,使用/etc/init.d/svnserve stop关闭SVN服务,虽然命令成功执行了,但是SVN进程依然还在,所以就想创建一个svn的启动关闭脚本来完成,不用每次手工kill进程并启动,脚本内容如下:

#!/bin/bash
#####################################
##Created on Sep 1st by Jerry12356
#####################################
SvnPath=/opt/svndata/
#SvnPort=`netstat -tunlp|grep svnserve|awk '{print $4}'|cut -d: -f2`
start(){
ps -ef|grep svnserve|grep -v grep >>/dev/null 2>&1
if [ $? -ne 0 ];then
svnserve -d -r $SvnPath
ps -ef|grep svnserve|grep -v grep >>/dev/null 2>&1
[ $? -eq 0 ] && echo "SVN server started successful."
else
SvnPort=`netstat -tunlp|grep svnserve|awk '{print $4}'|cut -d: -f2`
echo "SVN server is already running(Port:$SvnPort)..."
exit 1
fi
}
stop(){
ps -ef|grep svnserve|grep -v grep >>/dev/null 2>&1
if [ $? -eq 0 ];then
pkill svnserve >>/dev/null 2>&1
echo "SVN server stopped successful."
else
echo "SVN server is not running."
exit 127
fi
}
status(){
ps -ef|grep svnserve|grep -v grep >>/dev/null 2>&1
[ $? -eq 0 ] && echo "SVN server is running." ||echo "SVN server is stopped."
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage:$0 {start|stop|restart|status}"
exit 1
;;
esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux svn CVS