代码版本控制工具subversion,用来管理文件或文件夹以及修改记录,类似于文件服务器,用于开发合并代码等。

安装SVN:

yum install subversion -y

创建代码库:

安装完成后创建代码库,先创建代码库文件夹,然后在里面创建代码库,使用命令:

mkdir /var/svn
svnadmin create /var/svn/project

代码库的地址为:我们可以使用这个地址去访问代码库了。

svn://192.168.96.130/project

        创建完成后可以将现有的代码导入到代码库中,使用如下命令,这个导入就是把现有的代码导入到库中,并没有关联两者。

svn import /codedir  file:///var/svn/project -m "some words"

查看代码库中的资料列表:

svn list file:///var/svn/project

 

配置文件:

        配置文件就在刚刚创建的目录中,每个代码库都有各自对应的配置文件。

注意:在实际的使用过程中一个仓库一个用户配置文件会很繁琐难于管理,所以一般都将用户配置文件 passwd和权限配置文件authz 放在统一的文件夹下,各个仓库都使用相同的用户和权限配置文件。

/var/svn/project/conf/svnserve.conf  # 主配置文件,在里面可指定passwd和authz文件位置
mkdir /var/svn/etc/ 
/var/svn/etc/passwd # 配置用户名密码
/var/svn/etc/authz  # 配置每个用户的权限

svnserve.conf:主配置文件

[general]                 #配置段名称
anon-access = none        #匿名文件的读写权限,none为拒绝
auth-access = write       #认证账户的读写权限
password-db = /var/svn/etc/passwd      #账户和密码文件位置
authz-db = /var/svn/etc/authz          #权限文件,定义了每个账户所拥有的权限
realm = My Repository     #仓库名称

passwd:定义用户

[users]
qiyang = 123456  # qiyang是用户名 123456是明文密码
zhuqiyang = 123456
qiyang.zhu = 123456
user1 = 123456

authz:定义用户权限

[groups]
group_qiyang = qiyang,zhuqiyang,qiyang.zhu
group_user = user1,user2,user3,user4
group_hello = hello1,hello2,hello3
[/]  # 表示当前仓库的根目录
@group_qiyang = rw  # 表示group_qiyang 这个组里面的用户可以读和写
@group_hello = r
[qiyang:/code]    # 下面的内容是定义 qiyang 这个仓库中 code 目录的用户权限
@group_user = rw  # @开头的表示组名
@group_hello = r
qiyang = r        # qiyang这个用户可读
* = r             # 其他人可读
* =               # 其他人禁止访问

启动svn:

svnserve -d -r /var/svn 

-d    表示在后台运行

-r     指定仓库位置,千万不要写成仓库名,也就是后面的project不要带上。

CentOS7 启动方式:

vim /usr/lib/systemd/system/svnserve.service
vim /etc/sysconfig/svnserve  # 可修改仓库位置
systemctl status svnserve.service

        默认端口为3690,可以用 --listen-port=port 来修改端口,修改配置文件并不用重新启动服务,是即时生效的。


图形化管理工具


Subversion edge

官网地址:https://www.collab.net/downloads/subversion 


SVN客户端


linux客户端:

命令行工具,在linux命令行下输入:

svn --username qiyang --password 123 co svn://192.168.96.132/project /home/qiyang

完成后提示 Checked out revision 2. 这样就可以将远程的代码库下载到本地了。

windows客户端:

        图形化工具:TortoiseSVN,下载安装后新建文件夹然后在这个文件夹上右键 SVN checkout,然后弹出对话框输入地址 svn://192.168.96.132/project 后点击ok按钮后弹出账号密码对话框,输入账号和密码,点击ok即可,稍等片刻服务端仓库的代码就到本地的这个文件夹中了。 



快速配置


创建多个仓库:

mkdir /data/svn/repo1 -pv
mkdir /data/svn/repo2 -pv
svnadmin create /data/svn/repo1
svnadmin create /data/svn/repo2

子仓库的配置:因为有多个仓库,每个仓库仓库都有自己的配置文件,这里将每个子仓库的配置都指向同一个文件,这样就能集中管理用户和权限了。

vim /data/svn/repo1/svnserve.conf
[general]
anon-access = none                #匿名用户
auth-access = write               #控制鉴权用户访问版本库的权限
password-db = /data/svn/conf/passwd         #指定用户名口令文件名
authz-db = /data/svn/conf/authz             #指定权限配置文件名
realm = repo1                    #指定版本库的认证域,即在登录时提示的认证域名称

vim /data/svn/repo2/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /data/svn/conf/passwd         #两个仓库使用同一个密码文件
authz-db = /data/svn/conf/authz             #两个仓库使用同一个权限文件
realm = repo2

配置权限:authz

[groups]
admin = admin,test # 用户组 = 用户1,用户2
guest = guest

[repo1:/]
@admin = rw # @用户组 = rw 或 用户 = rw
@guest = r

[repo2:/]
@admin = rw
@guest = r

[repo2:/test] # 对repo2仓库下的目录进行权限管理
@admin = r

很多仓库的情况下:每个仓库都要写成“[repo2:/]”这种格式很麻烦,可以写成如下格式。

[groups]
admin = admin
 
[/]
@admin = rw

配置用户:passwd

[users]
admin = admin # 用户名 = 密码
guest = guest


启动服务:多个仓库的情况下启动服务时要指定父目录。-d 守护进程,-r 仓库目录

svnserve -d -r /data/svn/

只有一个仓库的情况下:

svnserve -d -r /data/svn/repo1

systemd启动服务:

vim /etc/sysconfig/svnserve
OPTIONS="-r /data/svn/"
systemctl start svnserve.service && systemctl enable svnserve.service

客户端访问地址:

svn://ip/repo1
svn://ip/repo2

参考文章:

zhuanlan.zhihu.com/p/308141489
jianshu.com/p/334404ba805e