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

简介:

关于SVN的描述网上已经有很多了,是一个开源代码版本控制系统,也是众多中小公司内部使用的一款基于代码管理的软件,这里摘抄百度百科的两段说明如下。

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。

svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

CentOS上安装SVN其实就很简单了,无论是RPM还是yum,这里使用yum安装。

1
2
rpm -qa subversion
yum  install  subversion -y

按照很多教程的说法,把SVN的数据文件和密码权限等文件分开存放。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
[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进程并启动,脚本内容如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/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

 



本文转自 jerry1111111 51CTO博客,原文链接:http://blog.51cto.com/jerry12356/1845189,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
72 0
|
网络安全 数据安全/隐私保护 开发者
SUV的配置及使用(搭建SVN服务器端)|学习笔记
快速学习SUV的配置及使用(搭建SVN服务器端)
107 0
|
Android开发 开发者
SUV的配置及使用(配置SVN客户端)|学习笔记
快速学习SUV的配置及使用(配置SVN客户端)
SUV的配置及使用(配置SVN客户端)|学习笔记
|
Android开发 开发者
SUV的配置及使用(配置SVN客户端)|学习笔记
快速学习SUV的配置及使用(配置SVN客户端)
SUV的配置及使用(配置SVN客户端)|学习笔记
|
网络安全 数据安全/隐私保护 开发者
SUV的配置及使用(搭建SVN服务器端)|学习笔记
快速学习SUV的配置及使用(搭建SVN服务器端)
|
Java jenkins 测试技术
Jenkins +svn(学习笔记三十)
Jenkins + SVN 持续集成  无事在家,闲得发慌,上周六面试华为的配置管理工程师,让我明白了在社会大行业里配置管理其实是个更为专业的岗位,涉及到软件开发的各个流程,数据的产生,规范的定义,代码的持续集成,基线管理,当然也涉及到供应链的一些东西,在工作中发现问题,解决问题,推动一些流程规范的制订,对流程中出现的问题进行修正等等。
2213 0
|
jenkins Linux 持续交付
Jenkins Linux安装SVN的安装(学习笔记二)
1.        安装SVN  yum install -y subversion 2.       新建一个目录用于存储SVN所有文件 mkdir /svndir 3.
1043 0
|
jenkins Linux 持续交付
Jenkins Linux下SVN的常用语法(学习笔记三)
SVN软件版本管理  1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.
1082 0