37.svn项目实践
1.svn版本管理
(1)svn简介
svn是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,svn是一个跨平台的开源的版本控制系统。svn版本管理工具管理着随时间改变的各种数据。这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器或者FTP服务器一样,但是与其他服务器不同的是svn会备份并记录每个文件每一次的修改更新变动。
svn是一个非常通用的软件系统,它常被用来管理程序源码,但是也可以管理任何类型的文件,如文本,视频,图片等。
(2)svn和git区别
svn属服务器端版本管理;
git属分布式版本管理,版本管理可以存放在本地,也可以提交到服务器。
GIT分布式版本控制系统最佳实践
http://blog.oldboyedu.com/git/
2.svn服务运行模式与访问方式 和 存放原理
(1)svn服务常见的运行访问方式有三种:
a.独立服务器访问
例如:svn://svn.etiantian.org/sadoc
b.借助apache等http服务
例如:http://svn.etiantian.org/sadoc
CSVN(apache+svn)是一个单独的整合的软件,带web界面管理的svn软件。
c.本地直接访问
例如:file://application/svndata/sadoc
(2)svn档案库数据格式
//只能通过命令来访问这种数据库的内容。


3.svn服务端部署
[root@oldboy-ol02 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:be:ac:61 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.123/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::e923:9370:6e50:eef1/64 scope link
valid_lft forever preferred_lft forever
[root@oldboy-ol02 ~]# rpm -qa subversion //默认安装好了,否则yum install -y subversion安装即可。
subversion-1.7.14-10.el7.x86_64
[root@oldboy-ol02 ~]# yum install -y subversion //升级
[root@oldboy-ol02 ~]# rpm -qa subversion
subversion-1.7.14-11.el7_4.x86_64
[root@oldboy-ol02 ~]# mkdir -p /application/svndata //存储数据,站点目录
[root@oldboy-ol02 ~]# mkdir -p /application/svnpasswd //密码,授权
[root@oldboy-ol02 ~]# svnserve --help
启动svn服务:
[root@oldboy-ol02 ~]# svnserve -dr /application/svndata/ //以该目录作为数据目录
查看端口服务,默认3690:
[root@oldboy-ol02 ~]# ss -lntup|grep svn
tcp LISTEN 0 7 *:3690 *:* users:(("svnserve",pid=4810,fd=3))
创建项目/版本库:
[root@oldboy-ol02 ~]# svnadmin create /application/svndata/sadoc
[root@oldboy-ol02 ~]# ls /application/svndata/sadoc
conf db format hooks locks README.txt
[root@oldboy-ol02 ~]# cd /application/svndata/sadoc/conf/
[root@oldboy-ol02 conf]# ll
total 12
-rw-r--r-- 1 root root 1080 Mar 12 16:41 authz
-rw-r--r-- 1 root root 309 Mar 12 16:41 passwd
-rw-r--r-- 1 root root 3090 Mar 12 16:41 svnserve.conf
[root@oldboy-ol02 conf]# mv authz passwd /application/svnpasswd/ //搬运密码,一个就够,不用复杂。
[root@oldboy-ol02 ~]# ll /application/svnpasswd/
total 8
-rw-r--r-- 1 root root 1080 Mar 12 16:41 authz
-rw-r--r-- 1 root root 309 Mar 12 16:41 passwd
匿名用户的访问权限:没有密码不让其访问;有密码才可以访问。
[root@oldboy-ol02 conf]# cp svnserve.conf{,.bak}
[root@oldboy-ol02 conf]# vim svnserve.conf
19 # anon-access = read
20 # auth-access = write
修改成:
19 anon-access = read
20 auth-access = write
27 # password-db = passwd
修改成:
27 password-db = /application/svnpasswd/passwd
34 # authz-db = authz
修改成:
34 authz-db = /application/svnpasswd/authz
[root@oldboy-ol02 conf]# diff svnserve.conf* //检查
19,20c19,20
< anon-access = read
< auth-access = write
---
> # anon-access = read
> # auth-access = write
27c27
< password-db = /application/svnpasswd/passwd
---
> # password-db = passwd
34c34
< authz-db = /application/svnpasswd/authz
---
> # authz-db = authz
添加用户和密码:
[root@oldboy-ol02 ~]# vim /application/svnpasswd/passwd
[root@oldboy-ol02 ~]# tail -4 /application/svnpasswd/passwd
# add
oldboy = 123456
alex = 123456
lee =123456
添加授权信息:
[root@oldboy-ol02 ~]# vim /application/svnpasswd/authz
[root@oldboy-ol02 ~]# tail -5 /application/svnpasswd/authz
# add
[sadoc:/]
oldboy = rw
alex = r
lee = r
重启svn服务使得配置文件生效:
[root@oldboy-ol02 ~]# pkill svn
[root@oldboy-ol02 ~]# pkill svn
[root@oldboy-ol02 ~]# ss -lntup|grep svn
[root@oldboy-ol02 ~]# svnserve -dr /application/svndata/
[root@oldboy-ol02 ~]# ss -lntup|grep svn
tcp LISTEN 0 7 *:3690 *:* users:(("svnserve",pid=4967,fd=3))
3.svn客户端部署
svn官网:https://tortoisesvn.net/
Home · TortoiseSVN
下载:TortoiseSVN-1.9.7.27907-x64-svn-1.9.7
本地安装目录:D:\Program Files (x86)\svn-client\
(1)将svn服务器中的数据首次下载到该目录:





(2)上传文件到svn服务器:



(3)查看svn服务器端该文件是否上传成功:


(4)再次提交文件并查看是否提交成功:

点击commit进行提交,

选择文件确定提交,

查看提交到svn服务端是否成功:
清除windows本地众多svn用户的缓存:
法一:
SVN客户端密码保存地点:
C:\Users\oldboy\AppData\Roaming\Subversion\auth\svn.simple
法二:



清掉某个网址的授权数据。

点击checkout,
alex用户权限是只读的,





点击commit,上传失败。


5.项目实践
某用户想拥有自己的目录来上传和下载文件,同时被oldboy老大管理。



为啥授权失败,清除掉,

重新提交,就可以了,



接下来,让alex和lee对各自有权限:
配置授权文件:
[root@oldboy-ol02 ~]# vim /application/svnpasswd/authz
[root@oldboy-ol02 ~]# tail -13 /application/svnpasswd/authz
# add
[sadoc:/]
oldboy = rw
alex = r
lee = r
[sadoc:/alex]
oldboy = rw
alex = rw
[sadoc:/lee]
oldboy = rw
lee = rw
重启svn服务使得配置文件生效:
[root@oldboy-ol02 db]# pkill svn
[root@oldboy-ol02 db]# pkill svn
[root@oldboy-ol02 db]# svnserve -dr /application/svndata/
[root@oldboy-ol02 db]# ss -lntup|grep svn
tcp LISTEN 0 7 *:3690 *:* users:(("svnserve",pid=5131,fd=3))
新建alex目录,每个人发个用户,

SVN安装部署
http://blog.51cto.com/xiexiaojun/2049665
浙公网安备 33010602011771号