SVN 集中式版本控制软件

目前流行的版本控制软件中,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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4f248b3239f66cadde7e5e281fc39dc1.html