svn服务

svn服务实战应用指南

1.1     svn介绍

什么是svn?

svn(sub-version)是近年来崛起的非常优秀的版本管理工具,与cvs管理工具一样,svn是一个跨平台的开源的版本控制系统,svn版本管理工具管理者随时间改变的各种数据

这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器或者ftp服务器,但是,与众不同的是,svn会备份并记录每个文件每一次的修改更新变动,这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本(回滚),当然也可以直接浏览制定文件的更新历史记录

为什么会有svn这样的一个项目

官方解释:为了接管cvs的用户基础

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

svn相关站点:

http://www.iusesvn.com/  svn中文网站

http://tortoisesvn.net    svn客户端

svn 集中式版本控制系统

svn版本控制系统是集中式的数据管理,存在一个中央版本库,所有开发人员本地开发所使用的代码都是来自于这个版本库,提交代码也都必须提交到这个中央版本库

svn版本控制系统工作流程如下:

  1. 在中央库上创建或从主干复制一个分支
  2. 从中央库 check out下这个分支的代码
  3. 增加几的代码文件,修改现存的代码或删除代码文件
  4. commit代码,假设有人在刚刚的分支上提交了代码,你就会被提示代码过期,你得先up你的代码后再提交,up代码的时候如果出现冲突,需要解决好冲突后再进行提交

缺点:

当无法连接到中央版本的环境下,你无法提交代码,将代码加入版本控制,你无法看到代码的历史版本以及版本的变化过程,提交到版本控制系统中的代码我们都默认通过自测可运行的,如果某个模块的代码比较复杂,不能短时间内实现

为可测的功能,那么你需要等很长的时间才能提交自己的代码,由于代码集中管理,因此,需要对中央版本库的存储做备份,这点分布式的版本控制系统要好一些,svn的备份要备份所有代码数据以及所有更改的版本记录

企业应用场景

svn仍是当前企业的主流,运维人员需要掌握的技术点:

运维人员掌握版本管理

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

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

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

svn服务端运行方式3种

  1. 独立服务器访问 例如:svn://svn.hdxy.org/sadoc
  2. 借助apache等http服务 例如: http://svn.hdxy.org/sadoc
    1. 单独安装apache+svn
    2. Csvn(apache + svn)是一个单独的整合软件,带web界面管理的svn软件
  3. 本地直接访问  例如  file://application/svndata/sadoc

svn客户端的访问方式


访问方式


说明


file://


直接通过本地磁盘访问


http://


通过webdav协议访问


svn://


通过tcp/ip自定义协议访问


svn+ssh


通过认证并加密的方式

Svn档案库数据格式:

Svn存储版本数据有2种方式:BDB(一种事物安全型表类型)和FSFS(一种不需要数据库的存储系统),因为BDB方式在服务器中断时,有可能锁住数据,所以还是fsfs方式更安全一点

BDB 是1.2版本以前的默认数据格式

FSFs是1.2版本之后的默认数据格式

Svn是基于关系数据库或一系列二进制文件的,一方面解决了许多问题(例如:并行读写共享文件)以及添加了许多新功能(例如:运行时的事物特性)然而另一方面,数据存储由此变得不透明,不能像ftp,nfs等能看到实体文件了

Svn 版本系统逻辑架构图原理图

客户端----[http|svn|local] ------svnserver接口------svn版本库-------后台管理[bdb|fsfs]

略。。。

集中式代码管理的核心是svn服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后进行开发,最后解决冲突、提交所有的版本信息都放在svn服务器上,因此如果脱离了服务器,开发者就无法进行提交代码工作

开发者利用svn版本管理系统工作流程:

开始新的一天的工作:

  1. 首先从svn服务器下载项目组新代码
  2. 进入自己的分支,进行开发工作,每隔一个小时向服务器向服务器上自己的分支提交一次代码(很多程序员都有这个习惯)
  3. 下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器

缺点:

  1. 由于每一次提交都保留一个原始副本,因此svn数据库容量会暴增
  2. 如果不能连接到svn服务器上,基本上不可以工作
  3. 不适合开源系统开发(开发人数非常多)

优点:

  1. 管理方便,逻辑清晰,符合一般人的逻辑习惯
  2. 易于管理,集中式svn服务器更能保证数据安全性
  3. 代码一致性非常高
  4. 适合开发人数不多的项目开发
  5. 普及度高,大部分软件配置管理的大学教材都是使用svn

2.1 安装配置svn服务

准备操作系统并查看系统环境

Centos6.6 64位系统

内核 2.6.32

安装svn

到底是编译安装还是yum安装?

编译,yum or rpm

一般,辅助性的软件用yum安装,重量级的软件用编译

首先yum安装

[[email protected] ~]# yum -y install subversion

注意:yum安装rpm包安装后本地不清除的方法

[[email protected] ~]# sed -i "s#keepcache=0#keepcache=1#g" /etc/yum.conf

[[email protected] ~]# grep  keepcache /etc/yum.conf

keepcache=1

2.1.3 配置并启动svn

建立svn版本系统数据存储根目录

mkdir –p /application/svndata

mkdir –p /application/svnpasswd

启动svn服务并指定服务的svn根目录

svnserve –d –r /application/svndata/

-d --daemon 表示以守护进程(后台方式,一直运行)的方式启动程序

-r 表示指定数据存储的目录

检查查看进程

ps –ef |grep svn

查看端口

netstat –lntup|grep 3690

lsof –i :3690

2.1.4 建立项目版本库

创建一个新的subversion 项目 sadoc ,其实,类似sadoc这样的项目可以创建多个,每个项目都是独立的

svnadmin help 查看创建项目的帮助

svnadmin help create 表示创建新项目的帮助信息

例如:

svnadmin create /application/svndata/sadoc

表示创建一个新的项目sadoc(版本库)

tree /application/svndata/sadoc

表示查看sadoc项目中的内容

2.15 调整svn配置文件及权限提升

配置允许用户

cd /application/svndata/sadoc/conf

authz 权限管理文件

passwd 用户和密码配置文件

svnserve.conf 配置文件

下面编辑配置文件

vi svnserve.conf 修改 注意要顶格写

12 anon-access = none

13 auth-access = write

20 password-db = /application/svnpasswd/passwd

27 authz-db = /application/svnpasswd/authz

利用diff比较源文件和修改之后文件

将模版文件拷贝到相关目录下

cp passwd authz  /application/svnpasswd/

修改权限

cd /application/svnpasswd/

chmod  700 *

vi passwd 添加账号

[users]

zhangsan = 123456

gongli = gongli

提示:

等号前是用户名,等号后面是svn密码

更改svnserve.conf时,需要重启svn服务,其他文件不用

authz 权限的配置文件

格式说明:

用户组格式:

[groups]

= ,

其中1个用户组可以包含1个或多个用户,用户中间以逗号分隔。

版本库目录格式:

[版本库:/项目/项目]

@用户名 = 权限   #表示设置组的权限

用户名 = 权限     #单个用户的权限设置

/ ,表示根目录及以下,我们指定为/application/svndata就是表示对全部版本库设置权限

[repos:/] 表示对版本库repos设置权限

[repos:/sadoc]表示对版本库中的sadoc项目设置权限

[repos:/sadoc/oldboy]表示对版本库repos中的sadoc项目的oldboy目录设置权限

权限可以是w ,r,wr和空,空表示没有任何权限

authz中每个参数都要顶格写

案例:

vi authz  修改配置文件

sagroup = zhangsan,gongli

[sadoc:/]

zhangsan = rw

gongli = r

@sagroup = r

注意:权限文件里的用户必须在passwd中定义

重启svn

reload 服务中 重新加载配置文件

pkill svnserve,

svnserve –d –r /application/svndata/

ps –ef|grep svn

客户端软件TORTOISE SVN

svn 客户端连接服务器的方式,账号及密码

svn://192.168.1.13/sadoc

用户名:zhangsan

密码: 123456

安装完svn客户端之后,在本地创建一个目录svndata,鼠标点击右键 选择 svn check out  之后出现一个窗口,调整一下访问地址,以及本地的目录路径,点击ok,输入用户名和密码

点击确定 就ok了

1 checkout下载svn服务器上的资源

2 输入正确的svn服务器的路径

3.输入账号和密码

4.提交修改后的代码文档

把一个代码文件放在创建的目录里svndata ,然后选择右键 svn commit 进行提交

如果想查看到底服务器上有没有更新,怎么办 ?

右键 选择 tortoiseSVN -----》repo-browser

到此svn部署成功了 !

定期下载

当svn有内容的时候,第二次更新的时候,变成svn update

>>定期上传 svn内容

紫色:提交一个新增项

蓝色:提交一个修改

深红:提交一个删除或替换

黑色:其他

>>删除svn的内容

在本地删除文档,然后点击svn commit 将服务器上的文档也删除

>>查看svn目录或者历史版本

点击右键tortoiseSVN  -----》show log

linux作为svn 客户端命令的使用

1.  将文件checkput 到本地目录(从svn库提取数据到本地)

例如:

在本地创建一个目录 /data

svn co svn://192.168.1.13/sadoc/ /data/ --username=zhangsan --password=123456

说明:co表示下载 checkout的缩写

和windows客户端一样 第二次下载就是update了

[[email protected] ~]# svn up svn://192.168.1.13/sadoc/ /data/ --username=zhangsan --password=123456

如果出现不支持utf-8说明 linux客户端的字符集有问题

解决方法:

调整字符集

export LC_CTYPE=’en_US.UTF-8’

export LC_ALL=

调整secure-crt的编码

>> 查看svn库中的数据

[[email protected] sadoc]# svn list svn://192.168.1.13/sadoc/ /data/ --username=zhangsan --password=123456 --verbose

9 zhangsan              Mar 07 19:20 ./

5 zhangsan          164 Mar 07  2015 clone.sh

Linux作客户端

>> 从本地提交数据到svn服务器

cd /data #进入本地svn目录

touch a b c # 创建abc三个文件

svn add a b c  #定义需要提交的文档

svn ci –m “svn ci data” #提交数据ci表示提交 –m表示解释说明

2.1 svn 钩子脚本简介

钩子脚本的具体写法就是操作系统中shell脚本程序的写法,可根据自己的svn所在的操作系统和shell程序进行相应的开发

钩子脚本就是被某些版本库事件触发的程序,例如:创建新版本或者修改未被版本控制的属性,每个钩子都能掌管足够多的信息来了解发生了什么事件,操作对象是什么,以及触发事件用户的账号。

根据钩子的输出或者返回状态,钩子程序能够以某种方式控制该动作继续执行,停止或者挂起

默认情况下,钩子的子目录中包含各种版本库钩子模版

cd /application/svndata/sadoc/hooks

要使用一个钩子,去掉模版的扩展名

重要提示:

钩子脚本,手动执行可以,但是放在subservision 中却不能执行,原因是没有设置钩子的路径或环境变量

svn版本系统中钩子种类及功能介绍


钩子脚本


说明


post-commit


在提交完成成功建立版本之后执行该钩子,提交已经完成,不可更改因此,本脚本的返回值被忽略,提交完成时触发事武


pre-commit


提交完成前触发该脚本

2.2 钩子生产应用场景举例

pre-commit

  1. 限制上传文件扩展名及大小,控制提交要输入的信息等。

post-commit

  1. svn更新自动周知,msn,邮件或者短信通知
  2. svn更新触发checkout程序,然后实时rsync推送到服务器

2.3 svn钩子生产应用实战

2.3.1 rsync 与svn钩子结合实现数据实时同步企业案例

需求:svn数据一更新,就要同步到/data/www目录

1.建立同步web站点 /data/www

2.svn co svn://10.0.0.17/sadoc  /data/www –username=zhangsan –password=123456

3. cp post-commit.tmpl  post-commit

4. 修改post-commit 脚本文件内容如下

logpath=’/app/log’

[ ! –d ${logpath} ] && mkdir ${logpath} –p

SVN=/usr/bin/svn

$SVN update –username zhangsan –password 123456 /data/www

if [ $? –eq 0 ]

then

/usr/bin/rsync –az –delete /data/www  /tmp/

fi

注意:1)钩子脚本的权限chmod 755 ,2)脚本内容中的命令尽量是绝对路径

企业案例逻辑图

开发人员------》svn服务器-------》推送给web服务器(极简版图)

利用pre-commit限制扩展名或者大小

原文地址:https://www.cnblogs.com/xh-blog/p/9973548.html

时间: 2024-08-02 06:50:30

svn服务的相关文章

Eclipse下安装SVN插件以及连接SVN服务并发布项目

Eclipse安装SVN插件 Help->Eclipse MarketPlace 查找并安装Subclipse插件 按默认步骤完成SVNEclipse插件的安装(安装完成后需要重启Eclipse后生效). 将项目从Eclipse发布到SVN服务器 新建一个Java项目: 在项目上右键,找到Team->ShareProject 选择SVN 创建一个新的资源库位置: 设置SVN地址,格式: svn://ip地址 设置SVN资源库的文件夹名称: 添加注释后选择完成: 填写SVN服务的用户名和密码 点

centos7.2 安装svn服务

简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据.这些数据放置在一个中央资料档案库(repository) 中.这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动.这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. SVN 的一些概念: repository(源代码库):源代码统一存放的地方 Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份 Co

Ubuntu Server搭建svn服务以及迁移方法【转】

转自:http://www.linuxidc.com/Linux/2013-05/84693.htm Ubuntu Server搭建svn服务以及迁移方法 采用apache+svn,http访问方式. 先确定安装了apache,没有安装则用以下命令: sudo apt-get install apache2 然后安装subversion及svn-apache连接库: sudo apt-get install subversion sudo apt-get install libapache2-s

构建企业代码管理系统之SVN服务(基础篇)

一.What's is a subversion Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年:Subversion作为新一代的版本管理系统,以其目录版本化.原子提交.版本化的元数据.更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站.论坛的代码文件:Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库

启动svn服务

先转到SVN的安装目录,比如,你安装在/home/svn 下面. svnserve 命令用来启动SVN服务 试一下svnserve --help,看看这个命令的帮组,其中有-d和-r,分别表示后台运行和数据仓库目录. 数据仓库目录表示你保存数据的地方,如你将工程的信息保存在/home/svndata下面,这个svndata就是你的数据仓库目录. 弄清楚了这些就可以来启动了: 输入命令: svnserve -d -r /home/svndata 后面那个要跟你自己的数据仓库目录. 这样我们就启动了

实战搭建 apache + svn 服务

SVN 作为版本控制软件是非常优秀的免费软件,现在想通过http://.. 访问,本文介绍一下搭建. 1.系统环境 [[email protected] ~]# uname -r 2.6.32-642.6.1.el6.x86_64 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) 系统IP:10.89.1.32 2.实战搭建 #安装所需要的软件 [[email protected] ~]# yum

linux svn 服务端搭建

环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用yum安装如下: yum install subversion2. 输入 svn --help可以查看svn的使用方法. usage: svn <subcommand> [options] [args] Subversion command-line client, version 1.6.11.

Linux下安装SVN服务(CentOS7下)

1. 安装 centos(我这里使用的是CentOS7)下yum命令即可方便的完成安装 测试安装是否成功: 2. 建立版本库 创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里): 创建版本库: 如果删除版本库: 3. 配置svn配置文件 每个版本库创建之后都会生成svnserve.conf主要配置文件.编辑它: 编辑示例: [general]   anon-access = none #控制非鉴权用户访问版本库的权限   auth-acce

linux安装svn服务端不使用apache

一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install subversion 3.测试是否安装成功 /usr/bin/svnserve --version 如提示以下内容,说明已安装成功 -------------------------------------- svnserve,版本1.6.11 (r934486) 编译于Apr 11 2013,17:28:04 版权所有(C) 2000-2009 CollabNet. Subv

Windows上安装配置SVN服务端

一.安装包 下载地址:http://subversion.apache.org/packages.html 此处下载Win32Svn版本(32位及64位系统都可用),下载完成后双击.msi文件,然后根据步骤提示安装即可. 二.配置 1.在磁盘上创建一个文件夹,用于保存svn的资源库,比如E:\svndata(后面步骤的操作都基于这个目录). 2.打开cmd,执行以下命令创建资源库(此处假设要开发的项目名为demo): svnadmin create E:\svndata\demo 执行完成后可以