阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SVN 集中式版本控制软件

126次阅读
没有评论

共计 5622 个字符,预计需要花费 15 分钟才能阅读完成。

简介:

目前流行的版本控制软件中,SVN (集中式版本控制) 算是使用范围更广、且使用时间更早的一款了,现在 git (分布式版本控制) 更火爆一点。

 以前写的 SVN 文档丢失了,简单整理一遍。

一、SVN 的安装 (CentOS)

shell > yum -y install subversion

shell > svn –version –quiet # 版本号
1.6.11

二、SVN 基本步骤

1、创建工作目录、版本库

 

shell > mkdir /svn # 创建一个工作目录 (可以略)
shell > svnadmin create /svn/myrepos # 新建一个版本库,名为 myrepos (可以使用 svnadmin help [ 可以接子命令] 命令参数 )

shell > ls /svn/myrepos/ # 版本库下的目录、文件
conf db format hooks locks README.txt

shell > tree /svn/myrepos/conf/ # 版本库配置文件目录
/svn/myrepos/conf/
├── authz # 用户授权
├── passwd # 用户认证
└── svnserve.conf # svnserve 服务配置文件

 

2、修改 SVN 版本库配置文件 (需要重启 svnserve)

 

shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/svnserve.conf # 文件行首不能有空格
[general]

anon-access = none # 匿名用户访问权限
auth-access = write # 认证用户访问权限
password-db = passwd # 认证用户密码文件
authz-db = authz # 目录授权文件位置
realm = My First Repository # 提示信息

[sasl]

 

3、添加认证用户、密码 (username = password)

shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/passwd
[users]

wang = wang_pwd
guaishou = guaishou_pwd

4、添加目录授权

 

shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/authz
[aliases]

[groups]

[myrepos:/] # 授权目录

wang = rw # 授权认证用户 (可读、可写)

* = # 非授权认证用户 (无权限)

 

5、以守护进程的方式启动 SVN

shell > svnserve -d -r /svn # -d 以守护进程的方式启动一个 svnserve,-r 指定版本库

# 默认监听 TCP 3690 端口,以守护进程模式启动时,可以使用 –list-port、–list-host 来指定端口、主机

shell > netstat -lnpt | grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1883/svnserve

6、授权测试 (一)

shell > svn checkout –no-auth-cache –username wang –password wang_pwd svn://192.168.12.128/myrepos /home/wang/myrepos # 成功
取出版本 0。

shell > svn co –no-auth-cache –username guaishou –password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos # 失败 (co = checkout)
svn: 认证失败

# 由上可知,authz 中的授权生效 (用户:guaishou 虽然也是认证用户,但是没有授权)

 

shell > touch /home/wang/myrepos/readme # 建立测试文件
shell > svn add /home/guaishou/myrepos/readme # 添加到工作区
shell > svn –no-auth-cache –username wang –password wang_pwd commit -m ‘add readme’ /home/guaishou/myrepos/readme # commit 提交,-m 指定 log
增加 home/wang/myrepos/readme
传输文件数据.
提交后的版本为 1。

 

# 由上可知,用户:wang 被授权的读、写权限生效

 

shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/authz
[aliases]

[groups]

[myrepos:/]

wang = rw

* = r # 非授权认证用户 (只读权限)

shell > svn co –no-auth-cache –username guaishou –password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos # 成功
A /home/guaishou/myrepos/readme
取出版本 1。

shell > echo my name is guaishou > /home/guaishou/myrepos/readme # 修改 readme
shell > svn –no-auth-cache –username guaishou –password guaishou_pwd commit -m ‘change readme’ /home/guaishou/myrepos/readme # 失败 (用户:guaishou 为只读权限)
svn: 提交失败(细节如下):
svn: 认证失败

 

# 由上可知,authz 文件发生改变,不需要重启 svnserve 即可生效

7、授权测试 (二)

 

shell > mkdir /home/wang/myrepos/{home_f,home_g,public} # 建立三个测试目录

shell > svn add /home/wang/myrepos/* # 添加到工作区
A /home/wang/myrepos/home_f
A /home/wang/myrepos/home_g
A /home/wang/myrepos/public
svn: 警告:“/home/wang/myrepos/readme”已纳入版本控制

shell > svn –no-auth-cache –username wang –password wang_pwd commit -m ‘add test dir’ /home/wang/myrepos/ # 提交到版本库
增加 home/wang/myrepos/home_f
增加 home/wang/myrepos/home_g
增加 home/wang/myrepos/public
提交后的版本为 2。

shell > shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/passwd # 添加认证用户
[users]

wang = wang_pwd
feng = feng_pwd
guaishou = guaishou_pwd

shell > grep -vP ‘^#|^$’ /svn/myrepos/conf/authz # 新的授权目录如下
[aliases]

[groups]

[myrepos:/]

wang = rw

* = r

[myrepos:/home_f]

wang = r
feng = rw

* =

[myrepos:/home_g]

wang = r
guaishou = rw

* =

[myrepos:/public]

* = rw

shell > svn co –no-auth-cache –username wang –password wang_pwd svn://192.168.12.128/myrepos /home/wang/myrepos/ # wang 检出了所有目录
A /home/wang/myrepos/home_f
A /home/wang/myrepos/readme
A /home/wang/myrepos/home_g
A /home/wang/myrepos/public
取出版本 2。

shell > svn co –no-auth-cache –username feng –password feng_pwd svn://192.168.12.128/myrepos /home/feng/myrepos/ # feng 没有检出 home_g
A /home/feng/myrepos/home_f
A /home/feng/myrepos/readme
A /home/feng/myrepos/public
取出版本 2。

shell > svn co –no-auth-cache –username guaishou –password guaishou_pwd svn://192.168.12.128/myrepos /home/guaishou/myrepos/ # guaishou 没有检出 home_f
A /home/guaishou/myrepos/readme
A /home/guaishou/myrepos/home_g
A /home/guaishou/myrepos/public
取出版本 2。

shell > touch /home/wang/myrepos/home_f/readme # 建立测试文件

shell > svn add /home/feng/myrepos/home_f/readme # 添加到工作区
A /home/wang/myrepos/home_f/readme

shell > svn –no-auth-cache –username wang –password wang_pwd commit -m ‘add readme’ /home/feng/myrepos/home_f/readme # 提交失败
增加 home/wang/myrepos/home_f/readme
传输文件数据.svn: 提交失败(细节如下):
svn: Access denied

shell > touch /home/wang/myrepos/public/readme

shell > svn add /home/wang/myrepos/public/readme
A /home/wang/myrepos/public/readme

shell > svn –no-auth-cache –username wang –password wang_pwd commit -m ‘add public/readme’ /home/wang/myrepos/public/readme # 提交成功
增加 home/wang/myrepos/public/readme
传输文件数据.
提交后的版本为 3。

 

## 好了,授权就到这里!

三、停止 svnserve

shell > kill $(ps aux | grep svnserve | grep -v grep | awk ‘{print $2}’)

四、SVN 备份、还原 (写个小脚本,加入到任务计划中!)

1、逻辑备份 (备份灵活、可以全量、增量备份 –incremental、节省空间,适合版本库比较小的规模)

shell > svnadmin dump /svn/myrepos > /data/backup/svn/myrepos_$(date +%Y%m%d).bak

2、物理备份 (占用空间大,备份、恢复速度快)

shell > svnadmin hotcopy /svn/myrepos/ /data/backup/svn/myrepos_hot_$(date +%Y%m%d).bak

3、逻辑还原

shell > svnadmin load /svn/myrepos/ < /data/backup/svn/myrepos_20160303.bak # 注意:如果版本库被删除,还原后还需重新配置认证用户、授权等!

4、物理还原

shell > svnadmin hotcopy /data/backup/svn/myrepos_hot_20160303.bak/ /svn/myrepos # 路径刚好反过来就好了!

五、Win 客户端连接

shell > iptables -A INPUT -p tcp –dport 3690 -j ACCEPT # 开放 TCP 3690 端口
shell > service iptables save

1、下载、安装小乌龟 (TortoiseSVN)

2、建立工作目录,右键 Checkout –> URL (svn://192.168.12.128/myrepos) –> 输入用户名、密码 (wang / wang_pwd)

3、测试授权,创建一个文件,添加,提交 看看是否很授权吻合!

## 先到此为止!

Ubuntu 14.04 下搭建 SVN 服务器 SVN://  http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN 搭建 (YUM 安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5 部署 Apache+SVN  http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows 下 SVN 服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN 数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server 搭建 SVN 服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129670.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5622字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中