SVN版本管理与大型代码上线

Posted heroke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN版本管理与大型代码上线相关的知识,希望对你有一定的参考价值。

SVN版本管理与大型代码上线

一、SVN简介

SVN是近年来崛起的非常优秀的版本管理工具,是一个开源的版本控制系统,开发的代码版本,
这些数据位置放置在一个中央资料档案库,很想一个普通的文件服务器或者FTP服务器
与其他服务器不用的是,SVN会备份并记录每个文件每一次的修改更新变动,
可以进行回滚操作,可以把任意一个时间点的档案恢复到想要的某一个旧的版本,
也可以浏览指定文件的更新历史记录。

SVN是一个非常通用的软件系统,它常被用来管理程序源码,但是它也可以管理任何类型的文件,
如文本,视频,图片等等

SVN相关站点

Subversion官网:
http://subversion.tigris.org/
http://subversion.apache.org/
svn客户端:http://toroisesvn.net/
svn中文网站:http://www.iusesvn.com/
中文常见问题解答FAQ:http://subversion.apache.org/faq.zh.html
官方手册:http://svnbook.red-bean.com/ 中英都有

SVN与Git的区别

集中代码版本管理工具——SVN,应用产品开发,可以让每个人协调,开发用的多
个人代码版本管理工具——Git,只针对个人,与其他人无法配合

企业应用场景

SVN仍是当前企业的主流,Git正在发展,也许未来也会成为主流,小企业用的多

运维人员掌握版本管理

1、安装,部署,维护,排障
2、简单使用,很多公司都是由开发来管理,包括建立新仓库和添加删除账号
3、对于版本控制系统,运维人员相当于开发商,开发人员是业主,运维搭建的系统为开发人员服务

SVN三种访问方式

(1)独立服务器访问

访问地址如:svn://svn.yunjisuan.org/sadoc;

(2)借助apache等http服务

访问地址如:http://svn.yunjisuan.com/sadoc;

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

(3)本地直接访问(例如:file://application/svndata/sadoc)

二、搭建SVN服务端

安装配置SVN服务

#光盘安装svn
[[email protected] ~]# yum -y install subversion
[[email protected] ~]# rpm -qa subversion
subversion-1.6.11-9.el6_4.x86_64

#建立svn版本库数据存储根目录(svndata)及用户,密码权限目录(svnpasswd)
mkdir -p /application/svndata   #数据存储根目录
mkdir -p /application/svnpasswd #用户,密码权限目录

建立项目版本仓库 

创建一个新的subversion项目yunjisuan,其实类似yunjisuan这样的项目可以创建多个,
每个项目对应不同的代码。这里只创建一个项目为例:

svnadmin create /application/svndata/yunjisuan
tree /application/svndata/yunjisuan/

编辑SVN配置文件

cd /application/svndata/yunjisuan/conf/
cp svnserve.conf{,.bak}
vim svnserve.conf    #修改12、1320、27行内容
12  anon-access = none          #禁止匿名访问
13  auth-access = write         #验证访问可写
20  password-db = /application/svnpasswd/passwd #密码文件位置
27  authz-db = /application/svnpasswd/authz     #验证文件位置

将authz文件和passwd文件拷贝到/application/svnpasswd下

cp /application/svndata/yunjisuan/conf/authz /application/svnpasswd/
cp /application/svndata/yunjisuan/conf/passwd /application/svnpasswd/

启动SVN

[[email protected] conf]# svnserve --help          #svn启动命令帮助
svnserve: warning: cannot set LC_CTYPE locale
svnserve: warning: environment variable LANG is en
svnserve: warning: please check that your locale name is correct
usage: svnserve [-d | -i | -t | -X] [options]

Valid options:
  -d [--daemon]            : daemon mode        #守护进程启动(后台)
  -i [--inetd]             : inetd mode
  -t [--tunnel]            : tunnel mode
  -X [--listen-once]       : listen-once mode (useful for debugging)
  -r [--root] ARG          : root of directory to serve #指定根目录
  -R [--read-only]         : force read only, overriding repository config file
  --config-file ARG        : read configuration from file ARG
  --listen-port ARG        : listen port        #监听端口默认3690
                             [mode: daemon, listen-once]
  --listen-host ARG        : listen hostname or IP address  #监听IP
                             [mode: daemon, listen-once]
  -T [--threads]           : use threads instead of fork [mode: daemon]
  --foreground             : run in foreground (useful for debugging)
                             [mode: daemon]
  --log-file ARG           : svnserve log file
  --pid-file ARG           : write server process ID to file ARG
                             [mode: daemon, listen-once]
  --tunnel-user ARG        : tunnel username (default is current uids name)
                             [mode: tunnel]
  -h [--help]              : display this help
  --version                : show program version information

[[email protected] conf]# svnserve -d -r /application/svndata/    #警告可以忽略
[[email protected] conf]# netstat -antup | grep 3690    #svn默认3690端口

解决svnserve启动时的警告问题

[[email protected] conf]# source /etc/sysconfig/i18n   #启用中文字符集
[[email protected] conf]# pkill svnserve
[[email protected] conf]# svnserve -d -r /application/svndata/
[[email protected] conf]# netstat -antup | grep 3690

passwd文件及密码设置

#在/application/svnpasswd/passwd文件末尾追加如下内容:
[[email protected] conf]# tail -4 /application/svnpasswd/passwd
yunjisuan = 123123    #设置账号密码
benet = 123123    #设置账号密码
stu001 = 123    #设置账号密码
stu oo2 = 456    #设置账号密码

authz授权

注意:
1、权限配置文件中出现的用户名必须已在用户配置文件中定义(必须有这个用户才行)
2、对权限配置文件的修改立即生效,不必重启svn

权限配置说明

[groups]
zuming = xiaoming,xiaohong    #用户组名 = 用户1,用户2
#版本库目录格式:
[repository:/baz/fuz]    #[<版本库>:/项目/目录]
@zuming = rw        #<用户组名> = <权限>
xiaoming = rw        #<用户名> = <权限>

技术分享图片

#编辑authz配置文件进行授权,在authz末尾加入以下几句代码
[[email protected] conf]# egrep -v "#|^$" /application/svnpasswd/authz
[aliases]
[groups]
sagroup = stu001,stu002    #新增本行,定义组名
[yunjisuan:/]        #定义授权的范围
yunjisuan = rw        #用户单独授权
benet = r            #用户单独授权
@sagroup = r        #组用户授权

重启svnserve

[[email protected] conf]# ps -ef | grep svn | grep -v grep
root       1261      1  0 17:16 ?        00:00:00 svnserve -d -r /application/svndata/
[[email protected] conf]# kill 1261
[[email protected] conf]# ps -ef | grep svn | grep -v grep
[[email protected] conf]# svnserve -d -r /application/svndata/

 



















以上是关于SVN版本管理与大型代码上线的主要内容,如果未能解决你的问题,请参考以下文章

项目SVN版本管理与大型代码上线方案

SVN版本管理与大型代码上线方案

企业SVN版本管理与代码上线方案

SVN版本管理与代码上线架构方案

01.Svn版本管理与代码上线架构方案

svn版本管理与上线