SVN部署(一)

一、什么是SVN(Subversion)

svn是一个跨平台的开源版本控制系统,Subversion管理着随时间改变的数据,这些数据放置在一个中央资料档案库(repository).这个档案库很像一个普通文件服务器,不过它会记住每一次文件的变动,这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史

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

svn的服务器常见有3种运行访问方式

1、独立服务器(例如:svn://svn.etian.org/sadoc);

2、借助apache(例如:http://svn.etian.org/sadoc);

3、本地直接访问(例如:file://svn.etian.org/sadoc)

客户端访问方式

Subversion可以通过多种方式访问--本地磁盘访问,或各种各样不同的网络协议,但一个版本库的地址永远都是一个URL,URL方案反映了访问方法

file:// 直接版本访问(本地磁盘或者网络磁盘)

http:// 通过WebDAV协议访问支持Subversion的Apache服务器

https:// 与http://相似,但是用的SSL加密

svn:// 通过未认证的TCP/IP自定义协议访问svnserver服务器

svn+ssh:// 通过认证并加密的TCP/IP自定义协议访问svnserver服务器

SVN数据格式

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

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

下面举例说明

开始新的一天说明

1、从服务器下载项目组最新代码

2、进入自己的分支,进行工作,每隔一小时向服务器上自己的分支持提交一次代码(很多人都有这个习惯。因为有时候自己对自己代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。

3、下班时间快到了,把自己的分支合并到服务器的主分支上,一天的工作完成,并反映给服务器

这就是经典的svn工作流程,从流程上看,有缺点,也有优点

缺点:

1、服务器压太大,svn数据库容量暴增

2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等

3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用SVN的)。但一般集中式管理的有非常明确权限管理机制(例如分支访问限制),可以实现分层管理,从而很好解决开发人数众多问题

优点:

1、管理方便,逻辑明确,符合一般人思维习惯

2、易于管理,集中式服务器更能保证安全性

3、代码一致性非常高

4、适合开发人数不多的项目开发

5、大部分软件配置的大学教材都是使用svn和vss

二、SVN逻辑架构(借了一张图)

三、安装与配置

1、服务器资源列表

服务器名称 系统 CPU架构 内核 IP地址 角色
svn.abc.com CentOS release 6.5 x86_64 2.6.32-431.el6.x86_64 192.168.1.220 SVN服务器

2、安装

2.1 yum安装

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

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

[[email protected] ~]# find / -name subversion-1.6.11-12.el6_6.x86_64.rpm

/var/cache/yum/x86_64/6/updates/packages/subversion-1.6.11-12.el6_6.x86_64.rpm

2.2检查是否已经安装

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

subversion-1.6.11-12.el6_6.x86_64

2.3创建svn版本根目录(svndata)及密码权限目录

[[email protected] ~]# mkdir -pv /application/svndata

mkdir: 已创建目录 "/application"

mkdir: 已创建目录 "/application/svndata"

You have new mail in /var/spool/mail/root

[[email protected] ~]# tree /application/

/application/

├── svndata

└── svnpasswd

2.4启动

[[email protected] ~]# svnserve -d -r /application/svndata

查看进程和端口

[[email protected] ~]# ps -ef |grep svn | grep -v grep

root      2277     1  0 16:36 ?        00:00:00 svnserve -d -r /application/svndata/

[[email protected] ~]# netstat -lntup | grep 3690

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      2277/svnserve

[[email protected] ~]# lsof -i tcp:3690

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 2277 root    3u  IPv4  32429      0t0  TCP *:svn (LISTEN)

2.5建立版本库

创建一个新Subversion项目sadoc,其实,项目可以创建多个

[[email protected] ~]# svnadmin create /application/svndata/sadoc

[[email protected] ~]# ls -ld /application/svndata/sadoc/

drwxr-xr-x 6 root root 4096 6月  15 16:42 /application/svndata/sadoc/

查看帮助

[[email protected] ~]# svnadmin create help

[[email protected] ~]# svnadmin  help create

2.6修改配置文件

[[email protected] conf]# cp /application/svndata/sadoc/conf/svnserve.conf svnserve.conf.bak

[[email protected] conf]# egrep "\-access|\-db = " svnserve.conf

# anon-access = read

# auth-access = write

# password-db = passwd

# authz-db = authz

[[email protected] conf]# sed -i ‘s/# anon-access = read/anon-access = none/‘ svnserve.conf

[[email protected] conf]# sed -i ‘s/# auth-access = write/auth-access = wirte/‘ svnserve.conf

[[email protected] conf]# sed -i ‘s/# password-db = passwd/password-db = /application/svnpasswd/passwd/‘ svnserve.conf

[[email protected] conf]# sed -i ‘s/# authz-db = authz/password-db = /application/svnpasswd/authz‘ svnserve.conf

把密码认证文件模板拷到相关目录(随意的)

[[email protected] conf]# pwd

/application/svndata/sadoc/conf

[[email protected] conf]# cp authz passwd /application/svnpasswd/

改权限

[[email protected] svnpasswd]# ll

总用量 8

-rw-r--r-- 1 root root 1080 6月  15 17:17 authz

-rw-r--r-- 1 root root  309 6月  15 17:17 passwd

[[email protected] svnpasswd]# chmod 700 *

[[email protected] svnpasswd]# ll

总用量 8

-rwx------ 1 root root 1080 6月  15 17:17 authz

-rwx------ 1 root root  309 6月  15 17:17 passwd

[[email protected] svnpasswd]# pwd

/application/svnpasswd

2.7 用户账号及密码定义在passwd配置

[[email protected] svnpasswd]# vim passwd

[users]

# harry = harryssecret

# sally = sallyssecret

qingyun = 168

tom = 168

jerry = 168

2.8 authz配置

用户组格式,其中1个用户组可以包含1个或多个用户,用户间用,隔开

[groups]

=,

[<项目库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

[/]表示根目录 及以下,根目录是svnserve启动时指定的,

我们指定为/application/svndata,[/]就是表示全部版库设置权限

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

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

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

权限主体可以是用户组,用户或*,用户组在前面加@,*表示全部用户

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

authz中每个参数都要顶格写,开头不能空格

对于组,要以@开头,用户不需要@开头

[[email protected] svnpasswd]# vim authz

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]

# harry = rw

# &joe = r

# * =

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r

ett_sa = qingyun,tom

ett_wangguan = jerry

[sadoc:/]

@ett_sa = rw

@ett_wangguan = r

2.9

重启svn命令

[[email protected] svnpasswd]# pkill svnserve

[[email protected] svnpasswd]# ps -ef | grep svnserv

root      2628  1871  0 17:51 pts/1    00:00:00 grep svnserv

[[email protected] svnpasswd]# svnserve -d -r /application/svndata/

[[email protected] svnpasswd]# netstat -tlunp | grep svn

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      2630/svnserve

四、客户端安装与测广东

1、下载连接

http://downloads.sourceforge.net/project/tortoisesvn/1.8.10/Application/TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ftortoisesvn%2F&ts=1434362210&use_mirror=softlayer-sng

2、安装TortoiseSVN

时间: 2024-11-05 01:51:39

SVN部署(一)的相关文章

centos6.5中的svn部署过程

centod6.5下的svn部署过程 安装: yum -y install subversion ,可用rpm -ql subversion查看svn的安装目录,默认在/usr/bin下 创建版本库: 进入conf修改配置文件: vim passwd 进去后将以下信息添加在末尾 [users] # harry = harryssecret # sally = sallyssecret 用户名 = 密码 #用户名和密码,这里可以添加多个用户名和密码 vim authz 添加在末尾 ... [gro

svn部署脚本

今天闲来没事,就写下svn部署脚本: #!/bin/bash #date:2017/11/20 #author:Vaedit read -p "请输入svn根目录名:" svndir read -p "请输入用户名:" name read -p "请输入密码:" password ip=`ip addr|grep inet|grep -v inet6|grep -v 127.0.0.1|awk '{print $2}'|grep -o '[0-9

svn 部署问题2则

SVN是Subversion的简称,是一个开放源代码的版本控制系统,部署后从经常会遇到如下问题: 1. SVN checkout 出现如下错误: 经过检查是因为: cat /application/svndata/sadoc/conf auth-access = write 被我写成了 auth-access = none 也有的朋友可能是 "="两边没有加空格,都要引起注意. 2.TortiseSVN 文件夹图标不显示 解决办法: 1.运行--->输入:regedit 2.查找

SVN部署与简单使用

原文发表于cu:2016-05-24 参考文档: http://www.tuicool.com/articles/Yv2iyu7 http://www.centoscn.com/CentosServer/ftp/2013/1217/2244.html http://sxlkk.iteye.com/blog/2264819 http://blog.csdn.net/fax5201314/article/details/38020547 svn服务器有2种运行方式: 独立服务器: (例如:svn:/

svn部署大中小型企业上线解决方案(四)

一.svn目录组织结构说明 --branch 分支,为测试时使用,几天以上的项目必须开分支,测试需要本分支通过,主线合并到分支通过,才能合并到主线进行测试 --tags 版本记录使用 --trunk 主线,与正式线相对应,当天不上线文件不允许提交 二.中型企业上线解决方案 规范运维人员操作步聚,制这统一操作脚本,备份文件名称,备份文件路径.使操作人性化,统一化. 三.大型公司解决上线方案 1.特别是JAVA代码环境,上线时,有数台机器同时需要更新: 1).本地开发人员取svn代码.当天上线提交到

利用svn部署代码发布更新可行性探究

准备:1.部署svn项目bidiam svn://192.168.245.128/bidiam2.本地checkout 到 F:\3.bidiam 下新建3文件夹:A B C4.A 下 新建文件夹 AA:B 下 新建文件夹 BB:C 下 新建文件夹 CC:5.AA 下 新建文件 aa.txt;BB 下 新建文件 bb.txt;CC 下 新建文件 cc.txt;6.本地提交改动7.服务器部署目录检出 /usr/local/bidiam :svn co svn://192.168.245.128/b

linux服务器SVN部署方案

SVN服务器部署方案 以下是具体步骤: 1.  安装SVN,由于源码安装会存在版本兼容问题,所以直接采用yum方式安装 查看是否已有svn,有的话先卸载 # rpm -qa |grepsubversion subversion-1.6.11-10.el6_5.x86_64 卸载原有的 # yum remove subversion 接着安装 #yum -y install subversion 判断是否安装成功 # svnserve –version 出现以上信息,说明安装成功! 2.建立SVN

SVN部署实战

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

企业svn部署

首先挂载脚本的光盘版 脚本内容如下:这个是安装nginx的脚本 这个是安装mysql的脚本 用yum暗转svn软件包 查看安装之后的版本是否成功安装 为php创建仓库目录repo 调整svn的参数,禁止匿名用户,设置用户的权限与密码文件 启动svn 创建密码文件 创建权限文件 创建目录并将设置导入目录中 nginx启动成功 配置nginx配置文件,通过location来调用php来解析动态网页 创建php测试页面,并测试成功访问 创建php的根目录,并添加页面信息 测试访问成功! 在windon

Maven+nexus+svn部署打包过程

1.软件版本 编号 软件 版本号 1 系统版本 Centos7 x64 2 Jdk版本 1.8.0_111 3 Jenkins版本 2.20 4 Svn版本 1.7.14 5 Maven 3.3.9 6 Nexus 2.14 7 Jenkins及svn服务器IP 192.168.1.30 2.jdk安装(省略) 3.svn安装(省略) 4.nexus安装(如果已有nexus私服,此处步骤可省略) 官网下载最新的nexus安装包: https://sonatype-download.global.