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

一、What‘s is a subversion

Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年;Subversion作为新一代的版本管理系统,以其目录版本化、原子提交、版本化的元数据、更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站、论坛的代码文件;Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库,还可以通过SSL协议传输加密,保证数据的安全性;Subversion是Apache软件基金会的发展的一个项目,并且也是一个丰富的开发人员和用户社区的一部分。

Subversion存储版本数据方式2种:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点;那么在创建Subversion版本控制仓库的时候,可以指定存储版本数据为FSFS方式;

二、Svbsersion系统逻辑架构图

三、安装与配置

3、1 服务器资源列表


服务器名称


系统


CPU架构


内核


IP地址


角色


storage


CentOS 6.3


x86_64


2.6.32-279.el6.x86_64


10.16.10.31


SVN服务器

3、2 安装

3、2、1 CentOS系统下安装

[[email protected] ~]#rpm -qa | grep subversion

[[email protected] ~]#yum install subversion

3、2、2 Ubuntu系统下安装

[[email protected] ~]#dpkg -l subversion

[email protected]:~#apt-get install subversion

3、2、3 关于Subversion 组件

1)svn

命令行客户端程序;

2)svnversion

显示工作拷贝的状态,即当前项目修订的版本;

3)svnlook

服务器端直接查看Svbversion版本库的工具;

4)svnadmin

服务器端建立、调整和修复Subversion版本库的工具;

5)svndumpfilter

过滤Subversion版本库转存数据流的工具;

6)mod_dav_svn

Apache HTTP服务器的一个模块,使版本库可以通过网络访问;

7)svnserve

服务器端程序,用来启动SVN服务的守护进程;

8)svnsync

可以通过网络增量镜像版本库的程序;

3、2、4 验证安装结果

[[email protected] ~]# svn --version
svn, version 1.6.11 (r934486)
   compiled Jun 23 2012, 00:44:03
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles ‘http‘ scheme
  - handles ‘https‘ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles ‘svn‘ scheme
* ra_local : Module for accessing a repository on local disk.
  - handles ‘file‘ scheme

##备注

当前Subversion版本为1、6,默认版本数据存储方式为FSFS;从显示的结果上,我们还可以知道Subversion支持基于http,https协议访问版本库,支持本地、远程导入项目与SASL的验证方式;

3、3 创建版本库

[[email protected] ~]#mkdir /data/svn –p

[[email protected] ~]#svnadmin create --fs-type fsfs /data/svn/repos

##提示:

自Subversion1、1引入了基于文件系统的“fsfs”,而且在Subversion1、2之后变成默认选项,如果你使用的Subversion是1、2以后的版本,创建版本库时则可省略参数“- -fs-type fsfs”;如果你想使用BDB后端来代替fsfs,那么在创建你的版本库时就需要指定“—fs-type bdb”;

关于两种版本库数据储存的优缺点可以参考

3、3、1 版本库数据储存对照表

#值得恭喜你的是,一个新的版本库已经被创建,现在你可以执行ll命令查看一下版本库的结构;

[[email protected] ~]#ll /data/svn/repos/

##提示

conf目录下存放了版本库的配置文件,以及用户验证文件和访问权限控制文件,文件本身的注释说明十分详细,读者可以根据注释自行配置;db 目录下存放着 Subversion 所要管理的所有受版本控制的数据,不同的存储方式(Berkeley DB 或者FSFS)下有着不同的目录结构,不过我们一般不用直接修改和查看这个目录下的内容,Subversion 的命令可以安全的操作这个目录;另外,hooks 目录存放着钩子脚本及其模版(一种版本库事件触发程序),locks 目录存放着Subversion 版本库锁定数据,format 文件记录了版本库的布局版本号。

3、4 创建项目

#项目是需要自己去创建的,以后用来存储用户提交(commit)的数据,以下是目录树结构,请自行创建;

3、4、1 导入项目

[[email protected]]# svn import /storage/bbs/ file:///data/svn/repos/ -m ‘forum storage ‘

Adding/storage/bbs/trunk

Adding/storage/bbs/branches

Adding/storage/bbs/tags

Committed revision1.

##备注

import关键字告诉subversion,我们想做的是把一些文件导入到项目仓库之中,参数‘-m‘使得你可以给这次的导入操作关联一条信息;你可能注意到file:///选项,它告诉Subversion到本地文件系统中寻找项目仓库,然后导入到项目/storage/bbs。

3、4、2 查询导入结果

[[email protected] ~]# svnlist --verbose file:///data/svn/repos/

1 rootMay 14 02:52 ./

1 rootMay 14 02:52 branches/

1 rootMay 14 02:52 tags/

1 rootMay 14 02:52 trunk/

##备注

此时,项目已经成功导入到版本库中,也许你会有疑问,trunk,tags,branches目录的作用是什么,分别用来存储什么数据,我想说的是大部分的项目都会有一条主线开发(branches),而且大部分的工作都是在那里完成的,其次项目还可能有发布分支(trunk),存放的是已经完成的代码,是发布上线使用后存放在那里的,不会经常被改动,除了需要修正bug,添加新功能的时候。最后,项目生命周期中的重大事件经常需要使用标签(tags)来记录,通常一个标签会包含代码发布的版本号(revision)。

3、4、3 查询版本库详细信息

[[email protected] ~]# svn info file:///data/svn/repos/
Path: repos
URL: file:///data/svn/repos
Repository Root: file:///data/svn/repos
Repository UUID: 80e85530-0b77-4a69-94af-6c50810b2a5e
Revision: 1
Node Kind: directory
Last Changed Author: root
Last Changed Rev: 1
Last Changed Date: 2014-05-14 02:52:45 -0700 (Wed, 14 May 2014)

##备注

根据显示的信息,我们可以知道版本库的路径是repos,URL的本地路径为file:///data/svn/repos,版本的所有者,UUID,版本号,以及上次变更的用户,具体时间等;

3、5 配置

3、5、1svnserve.conf文件,如下所示:

[[email protected] ~]# cd /data/svn/repos/conf/
[[email protected] conf]# vim svnserve.conf
anon-access = none                              #指定匿名用户是否有权限访问版本库,无(none);
auth-access = write                             #指定验证用户是否有权限访问版本库,写(write);
password-db = passwd                            #指定用户的验证文件
authz-db = authz                                    #指定用户访问权限控制文件

3、5、2authz文件,如下所示:

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
admin = zhangsan,hechunyang
test = liutong,zhangbo
[repos:/]
@admin = rw
@test = r

##备注

1)Groups 定义用户组,一个用户组可以包含一个或多个用户,用户之间用逗号分隔,如下所示:

用户组= 用户,用户

admin = zhangsan,hechunyang

2)[repos:/] 定义版本库的格式与访问权限,“repos”表示版本库,“:/”表示版本库下的所有项目,关于权限的分配:w(写),r(读),“”(空)则表示不分配权限给用户或用户组,如下所示:

[repos:/]

@admin = rw

liutong = r

##提示

@admin= rw表示定义用户组的权限,用户组以“@”开头,授予其组中成员可读可写的权限;

Liutong= r表示定义用户的权限,授予可读权限;

* = 表示全部的用户,权限为空,即没有任何权限;

3、5、3 passwd文件,如下所示

[users]
zhangsan = 123456
liutong = 123456
hechunyang = 123qwe
zhangbo = 123456

##提示

passwd文件本身注释说明十分的详细,它告诉你如何去定义访问版本库的用户名以及密码,也给了示例,格式为:用户名 = 密码;我们可以看到密码是以明文的方式出现,显然十分的不安全,通过HTTP,HTTPS,SSL可以实现对用户密码md5加密,网据传输数据加密,还可以通过web浏览器访问SVN服务器内置的版本库。

3、5、4 启动SVN服务进程

[[email protected] ~]# svnserve -d -r /data/svn/
[[email protected] ~]# netstat -lntp | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      47494/svnserve
[[email protected] ~]# ps -ef | grep svnserve
root     47494     1  0 May14 ?        00:00:00 svnserve -d -r /data/svn/

四、客户端安装与测试

4、1 下载TortoiseSVN

http://jaist.dl.sourceforge.net/project/tortoisesvn/1.8.4/Application/TortoiseSVN-1.8.4.24972-x64-svn-1.8.5.msi

4、2 安装TortoiseSVN

4、3 签出SVN项目

##提示

a)svn://10.16.10.31/repos,10.16.10.31表示SVN服务器的IP地址,repos为SVN的版本库;

b)F:\storage,表示把版本库repos中的项目签入本地磁盘F下storage目录;

##提示

服务器端配置没有错误的话,输入passwd文件中指定的用户名与密码,便可把项目签出至本地;

##提示

可以看到bbs项目被签出到本地的F盘的storage目录下,后期开发组的成员会在相应的目录下完成所有的开发工作;

4、4 测试

##提示

研发人员在branches(主线)目录创建hello.txt文件,右键选择add添加文件,然后右键commit提交数据;

4、5 SVN更新

[[email protected]~]# mkdir /storage

[[email protected]~]# yum install subversion

[[email protected]~]# svn co svn://10.16.10.31/repos /storage/ --username=zhangsan

##提示

我们已经把开发组成员提交的数据,成功更新至测试服务器的/storage目录下,其中参数co(checkout)签出数据,--username=zhangsan表示以张三用户的身份验证;

在写这篇文档之前,我浏览许多朋友的博客,看过Subversion相关的书籍,并结合实际工作中的经验写下这篇文档,希望能够帮助到需要的朋友。

构建企业代码管理系统之SVN服务(基础篇),布布扣,bubuko.com

时间: 2024-10-10 10:16:52

构建企业代码管理系统之SVN服务(基础篇)的相关文章

服务基础篇       dns 域名解析服务  

实验环境   :     redhat7.2       redhat 6.7      redhat    6.7 搭建主从DNS服务 :         主服务器ip  192.168.1.144     从服务器ip192.168.1.120 客户机   192.168.1.110 服务安装包 修改主配置文件named.conf 监听端口开放 允许任何主机访问 修改named.rfc1912.zone 定义正反向解析区域  ,   服务模式为master  且允许从dns服务器同步数据 修

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

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

SVN 服务启动报错 0x8007042a

服务器环境:Windows Server 2008 R2 企业版,Visual SVNServer 2.6.5 不能签出代码,发现svn服务关闭,手动启动报错: 事件查看器: Error: no listening sockets available, shutting downError: Unable to open logs 原因:端口被占用 解决: Visual SVNServer->菜单->操作->properties->network查看端口是433 netstat -

小程序Kbone开发教程基础篇02-使用kbone-ui实现一个按钮

前言 本节我们学习使用kbone-ui框架的使用,kbone-ui是微信推出的支持小程序和Vue框架的多端UI库,我们首先完成Button的使用. 一.基础知识 1.kbone-ui简介 kbone-ui 是一个能同时支持 小程序(kbone) 和 vue 框架开发的多端 UI 库.kbone 框架是用来对齐 Web 和 小程序多端的一个解决方案.在使用时,还是需要注意 小程序和 Web 之间的开发差异性,为了磨平这块内容,提供 kbone-ui 组件库.通过,kbone-ui 来磨平大部分的实

Squid服务基础及构建代理服务器

1.1 Squid服务基础 1.1.1 缓存代理概述 Squid:应用层的代理服务软件,主要提供缓存加速.应用层过滤控制的能 1.代理的工作机制: 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需呀的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机要的访问页面,则由代理服务器向internet发送请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机,如下图所示. 2.代理的基本类型 传统代理:也就是普通的代理服务器

乌云章华鹏:如何构建高效的安全运维服务平台

如何构建高效的安全运维服务平台 大家好,我是乌云的章华鹏,今天和大家分享的话题是"高效安全运维服务平台的构建",包括:企业的数据安全问题,运维安全中面临的网络.系统服务.应用相关配置等问题. 企业安全的核心是数据安全 当我们在讨论如何构建安全运维服务平台之前,我们需要考虑的问题是构建这样一个平台的核心需求是什么?核心需求是帮助企业解决安全风险,避免因为安全风险带来的业务损失. 我们都知道对于一个依赖互联网的企业来说,数据是企业的核心资产,那么归根结底,其实企业安全的核心是数据安全,所以

Linux -- 利用IPS(入侵防御系统) 构建企业Web安全防护网

一.IPS系统简介 (应用层上应用) 防火墙只在网络层上应用,IPS 和防火墙相比,检测及过滤功能更为强大,它通过串联在网络主干线路上,对防火 墙所不能过滤的攻击进行过滤.这样一个两级的过滤模式,可以最大地保证系统的安全.在 一些专业的机构,或对网络安全要求比较高的地方,IPS和其他审计跟踪产品结合,可以提 供针对网络信息资源全面的审计资料,这些资料对于攻击还原.入侵取证.异常事件识别. 网络故障排除等等都有很重要的作用. 作为串接部署的设备,IPS必须要确保用户业务不受影响,错误的阻断必定意味

企业应用架构之微服务架构

微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设计原则,然后着重介绍作为一个"微服务应用平台"需要提供哪些能力.解决哪些问题才能更好的支撑企业应用架构. 微服务平台也是我目前正在参与的,还在研发过程中的平台产品,平台是以SpringCloud为基础,结合了普元多年来对企业应用的理解和产品的设计经验,逐步孵化的一个微服务应用平台. 目录:

svn服务

svn服务实战应用指南 1.1     svn介绍 什么是svn? svn(sub-version)是近年来崛起的非常优秀的版本管理工具,与cvs管理工具一样,svn是一个跨平台的开源的版本控制系统,svn版本管理工具管理者随时间改变的各种数据 这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器或者ftp服务器,但是,与众不同的是,svn会备份并记录每个文件每一次的修改更新变动,这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本(回滚),当然也可以直接浏览制定文件