千家信息网

SVN的配置记录

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,场景介绍:最近朋友公司想搭建一套版本控制软件,让我推荐下,我跟他说SVN或者GIT都可以,最后他选择使用SVN作为版本控制,我简单的跟他写了个文档跟他介绍下:一、SVN是什么?1、subversion
千家信息网最后更新 2024年09月22日SVN的配置记录

场景介绍:最近朋友公司想搭建一套版本控制软件,让我推荐下,我跟他说SVN或者GIT都可以,最后他选择使用SVN作为版本控制,我简单的跟他写了个文档跟他介绍下:

一、SVN是什么?

1、subversion

2、SVN是一个版本管理工具

3、所有数据都集中在档案库里,类似于FTP工具

4、管理任意一个元素(文件),任何时刻的变化,ftp只是一个上传下载的工具(SVN会备份并记录每个文件每一次的修改更新变动)

常用的版本管理工具:vss,cvs,svn,git


二、svn与git的简单区别:

1、svn是一个集中式的版本管理,git是一个分布式版本控制

2、svn要做版本管理的话,必须要提交到服务器上,而git,就算服务器断开的话,还可以在本地做版本控制

3、GIT把内容按元数据方式存储,而SVN是按文件

4、GIT没有一个全局的版本号,而SVN有

5、GIT的内容完整性要优于SVN

参考资料:http://www.oschina.net/news/12542/git-and-svn


三、运维人员应该掌握哪些版本管理:

对于版本管理系统,运维人员需要掌握的技术点:

1、安装、部署、维护、排障

2、简单实用,很多公司都是开发来管理,包括建立新仓库和添加删除账号

3、对于版本控制系统,运维人员相当于开发商,开发人员是业主,运维搭建的系统为开发人员服务


四、SVN服务运行模式与访问模式

1、独立服务器访问

访问地址如:svn://svn.test.com/os


2、借助apache等http服务

访问地址如:http://svn.test.com/os

a)单独安装apache+svn(不要用)

b)CSVN(apache+svn)是一个单独的整合的软件,带web界面管理的SVN软件


3、本地直接访问

file:///application/svndata/os

推荐svn以及csvn web管理方式


五、SVN 的工作原理:

采取客户端/服务器模式--在服务器的版本库中保存项目文件的各个版本, 所有参与协同开发的程序员在自己本地电脑上保存一个工作副本。

SVN 支持程序员将本地副本更新到服务器端的最新版本,也支持将本地副本的最新改变更新到服务器端, 而且后面的更新不会覆盖前面的更新,而是作为一个新的版本被保存下来--SVN甚至支持将本地工作副本恢复为服务器端保存的某一个历史版本。


六、SVN基本操作:

1、检出(checkout):将一个服务器端创建好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。

2、更新(update):将本地文件更新为服务器端的最新版本,通常为每天上班时或修改公共文件之前执行一次。

3、提交(commit):将本地修改提交到服务器端。通常每天下班前或每实现一个功能、完成一个模块时执行一次。


七、SVN的安装与配置:

[root@LVS-DR01 ~]# yum -y install subversion[root@LVS-DR01 ~]# rpm -qa subversionsubversion-1.7.14-10.el7.x86_64[root@LVS-DR01 ~]# svnserve --versionsvnserve, version 1.7.14 (r1542130)   compiled Nov 20 2015, 19:25:09Copyright (C) 2013 The Apache Software Foundation.This software consists of contributions made by many people; see the NOTICEfile for more information.Subversion is open source software, see http://subversion.apache.org/The following repository back-end (FS) modules are available:* fs_base : Module for working with a Berkeley DB repository.* fs_fs : Module for working with a plain file (FSFS) repository.Cyrus SASL authentication is available.创建svn数据目录,默认的svn目录是/var/svn,需要我们手动创建:[root@LVS-DR01 ~]# mkdir -p /var/svn使用svnadmin初始化仓库:[root@LVS-DR01 ~]# svnadmin create /var/svn[root@LVS-DR01 ~]# tree /var/svn/var/svn├── conf│?? ├── authz│?? ├── passwd│?? └── svnserve.conf├── db│?? ├── current│?? ├── format│?? ├── fsfs.conf│?? ├── fs-type│?? ├── min-unpacked-rev│?? ├── revprops│?? │?? └── 0│?? │??     └── 0│?? ├── revs│?? │?? └── 0│?? │??     └── 0│?? ├── transactions│?? ├── txn-current│?? ├── txn-current-lock│?? ├── txn-protorevs│?? ├── uuid│?? └── write-lock├── format├── hooks│?? ├── post-commit.tmpl│?? ├── post-lock.tmpl│?? ├── post-revprop-change.tmpl│?? ├── post-unlock.tmpl│?? ├── pre-commit.tmpl│?? ├── pre-lock.tmpl│?? ├── pre-revprop-change.tmpl│?? ├── pre-unlock.tmpl│?? └── start-commit.tmpl├── locks│?? ├── db.lock│?? └── db-logs.lock└── README.txt10 directories, 27 files[root@LVS-DR01 ~]# cd /var/svn/conf/[root@LVS-DR01 conf]# lltotal 12-rw-r--r-- 1 root root 1080 Jun 14 14:59 authz-rw-r--r-- 1 root root  309 Jun 14 14:59 passwd-rw-r--r-- 1 root root 3090 Jun 14 14:59 svnserve.conf[root@LVS-DR01 conf]# cp svnserve.conf svnserve.conf.bak

八、开启SVN服务:

[root@LVS-DR01 ~]# systemctl start svnserve.service[root@LVS-DR01 ~]# systemctl status svnserve.service[root@LVS-DR01 ~]# systemctl enable svnserve.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.SVN默认开启3690端口,检查下:[root@LVS-DR01 ~]# lsof -i :3690COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsvnserve 60317 root    3u  IPv4 286761      0t0  TCP *:svn (LISTEN)[root@LVS-DR01 ~]# netstat -antp | grep svntcp        0      0 0.0.0.0:3690            0.0.0.0:*         LISTEN      60317/svnserve

九、修改SVN默认位置

在CentOS7下使用yum直接安装SVN,修改SVN默认项目的位置[root@LVS-DR01 svn]# mkdir -p /dawnpro/svn[root@LVS-DR01 conf]# vim /etc/sysconfig/svnserve# OPTIONS is used to pass command-line arguments to svnserve.# # Specify the repository location in -r parameter:OPTIONS="-r /dawnpro/svn"#OPTIONS="-r /var/svn"说明:将/var/svn目录调整为/dawnpro/svn[root@LVS-DR01 conf]# systemctl restart svnserve

十、创建svn版本库目录

[root@LVS-DR01 svn]# cd /dawnpro/svn/[root@LVS-DR01 svn]# mkdir -p EIP EMS SAP[root@LVS-DR01 svn]# svnadmin create EIP[root@LVS-DR01 svn]# svnadmin create EMS[root@LVS-DR01 svn]# svnadmin create SAP[root@LVS-DR01 svn]# lltotal 0drwxr-xr-x 6 root root 86 Jun 16 21:56 EIPdrwxr-xr-x 6 root root 86 Jun 16 21:56 EMSdrwxr-xr-x 6 root root 86 Jun 16 21:57 SAP

十一、新建个目录统一管理用户权限

[root@LVS-DR01 ~]# mkdir -p /dawnpro/svn/conf/[root@LVS-DR01 ~]# cp /dawnpro/svn/EIP/conf/* /dawnpro/svn/conf/[root@LVS-DR01 ~]# cd /dawnpro/svn/conf/[root@LVS-DR01 conf]# lsauthz  passwd

十二、修改权限管理文件

[root@LVS-DR01 conf]# egrep -v "^#|^$" authz [groups]EIP = EIP01,EIP02EMS = EMS02,EMS02SAP = SAP01,SAP02[/]* =[EIP:/]@EIP = rw* =[EMS:/]@EMS = rw* =[SAP:/]@SAP = rw* =说明:a) * = 以上没有定义的用户都没有任何权限b) @EIP = rw代表EIP组具有rw权限[root@LVS-DR01 conf]# egrep -v "^#|^$" passwd [users]admin = adminEMS01 = EMS01EMS02 = EMS02EIP01 = EIP01EIP02 = EIP02SAP01 = SAP01SAP02 = SAP02[root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/EIP/conf/svnserve.conf [general]anon-access = noneauth-access = writepassword-db = /dawnpro/svn/conf/passwdauthz-db = /dawnpro/svn/conf/authzrealm = EIP[root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/EMS/conf/svnserve.conf [general]anon-access = noneauth-access = writepassword-db = /dawnpro/svn/conf/passwdauthz-db = /dawnpro/svn/conf/authzrealm = EMS[root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/SAP/conf/svnserve.conf [general]anon-access = noneauth-access = writepassword-db = /dawnpro/svn/conf/passwdauthz-db = /dawnpro/svn/conf/authzrealm = SAP

十三、测试下权限配置的结果

a)使用SVN客户端访问SVN服务器

b)使用EIP01账号访问svn://10.10.10.101/EIP

c)测试上传"04-git诞生记.png",上传成功(过程太短,我就没截图)

d)换个账号进行测试(使用EMS01账号进行测试)

e)提示没有权限(测试成功)

说明,SVN服务修改完配置文件,不需要重启SVN服务就可以直接生效。






0