前言
关于代码的管理一般来说是有两种方式:集中式与分布式。而关于这两种方式最常用的工具的代表分别是SVN与Git。
这两种工具,实际上它们是各有其优点和缺点的。至于一个项目所使用的哪种管理代码的方式,一般是与其开发人员的使用习惯有关。有人觉得Git更好,有人觉得SVN更方便。当然,我们认为存在就是有道理的,svn被使用了这么久,还没有被完全取代,就像是电子货币的出现还未能取代现金,其存在是有其必要性的。所以,我们认为凡是要与代码打交道的人,都要了解一下这两款工具。
由于以前写了一些Gitlab的相关文章,就不介绍它了。下面我们要介绍的是SVN的安装与配置。
svn的安装与配置
【1】svn安装
关于svn或者说软件的安装方式有多种。下面只介绍yum安装,由于其会自动安装svn服务器相关服务和依赖。关于源码包安装请去官网下载源码包,安装时注意版本、依赖及配置环境变量。
svn官网地址:http://subversion.tigris.org
<1>SVN安装
yum -y install subversion
<2>查看svn版本
svn --version
【2】创建svn版本仓库
创建的名称要根据需求
<1>创建版本库目录(为下面创建的版本库提供存放位置)
mkdir /root/svn.com/
<2>创建svn版本库(此处repos为设定的版本库名称,可自定义)
svnadmin create /root/svn.com/repos
【3】配置SVN
前一步创建版本库后,会在设定的版本库下生成文件,conf下为配置文件。
authz:账号及权限管理,控制账号分组及其是否可读写
passwd:负责账号及其密码管理
svnserve.conf:svn服务器配置文件
<1>配置账号及密码
[users]下为账号及对应密码
账号 = 密码
vim passwd
[users]
wangwu = qwe123asd
alis = @#FEX##
注意:要顶格写账号,等号两端空一格
<2>配置用户组及权限
[groups]
下方为创建用户组
某用户组 = 用户1,用户2,用户…
版本库目录格式:[版本库:项目目录]
下方为设定某用户或用户组可对某版本库的根目录执行的权限
@用户组 = 权限
用户 = 权限
r只读 rw可读写
* = r 意为其他用户只有读权限
vim authz
[groups]
admin = wangwu,alis
[repos:/]
@admin = rw
* = r
注意:
对此文件的修改会立即生效,不必重启svn
[/]:表示对全部版本库设置权限,根目录是svnserve启动时指定的
[repos:/]:表示对版本库repos设置权限
[repos:/XXX]:表示对版本库repos中的某项目设置权限
[repos:/XXX/XXX]:表示对版本库repos中的某项目的某目录设置权限
<3>配置svn
vim svnserve.conf
anon-access = read 允许匿名;可选择none,不允许匿名
auth-access = write 授权用户可写
password-db = passwd 指定账号文件;可填写其他路径
authz-db = authz 指定权限文件;可填写其他路径
realm = /root/svn.com 指定版本库所在目录
【4】启动SVN版本库
<1>启动svn版本库
svnserve -d -r /root/svn.com/
<2>查看svn
ps aux |grep svn
netstat -lnput |grep svn
svn默认3690端口
<3>svn本地测试
svn co svn://ip/版本库名
[root@ conf]# svn co svn://127.0.0.1/repos
Authentication realm: <svn://127.0.0.1:3690> 1cb25d65-b178-4af4-9d93-a73df5857558
Password for 'root':
Authentication realm: <svn://127.0.0.1:3690> 1cb25d65-b178-4af4-9d93-a73df5857558
Username: wangwu 输入用户名
Password for 'wangwu': 输入密码
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<svn://127.0.0.1:3690> 1cb25d65-b178-4af4-9d93-a73df5857558
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes 输入yes
A repos/test.php
Checked out revision 1.
注意:由于SVN中无提交的代码,可拉下与版本库同名的目录即为成功。
【5】防火墙开放SVN
要使SVN可被拉取代码,需开放svn的端口及服务
<1>centos7端口放行
firewall-cmd --permanent --add-port=3690/tcp
firewall-cmd --reload