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逻辑架构(借了一张图)



wKioL1N0nPqSMG5hAAHpADesTQo983.jpg

spacer.gif三、安装与配置

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安装

1
2
3
4
[root@svn ~] # sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@svn ~] # yum install -y install subversion
[root@svn ~] # 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检查是否已经安装

1
2
[root@localhost ~] # rpm -qa subversion
subversion-1.6.11-12.el6_6.x86_64

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

1
2
3
4
[root@svn ~] # mkdir -pv /application/svndata
mkdir : 已创建目录  "/application"
mkdir : 已创建目录  "/application/svndata"
You have new mail  in  /var/spool/mail/root
1
2
3
4
[root@svn ~] # tree /application/
/application/
├── svndata
└── svnpasswd


2.4启动

1
[root@svn ~] # svnserve -d -r /application/svndata


查看进程和端口

1
2
3
4
[root@svn ~] # ps -ef |grep svn | grep -v grep
root      2277     1  0 16:36 ?        00:00:00 svnserve -d -r  /application/svndata/
[root@svn ~] # netstat -lntup | grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      2277 /svnserve
1
2
3
[root@svn ~] # 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,其实,项目可以创建多个

1
2
3
[root@svn ~] # svnadmin create /application/svndata/sadoc
[root@svn ~] # ls -ld /application/svndata/sadoc/
drwxr-xr-x 6 root root 4096 6月  15 16:42  /application/svndata/sadoc/

 

  查看帮助

1
2
[root@svn ~] # svnadmin create help
[root@svn ~] # svnadmin  help create



2.6修改配置文件

1
[root@svn conf] # cp /application/svndata/sadoc/conf/svnserve.conf svnserve.conf.bak
1
2
3
4
5
[root@svn conf] # egrep "\-access|\-db = " svnserve.conf
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
1
2
3
4
[root@svn conf] # sed -i 's/# anon-access = read/anon-access = none/' svnserve.conf
[root@svn conf] # sed -i 's/# auth-access = write/auth-access = wirte/' svnserve.conf
[root@svn conf] # sed -i 's/# password-db = passwd/password-db = /application/svnpasswd/passwd/' svnserve.conf
[root@svn conf] # sed -i 's/# authz-db = authz/password-db = /application/svnpasswd/authz' svnserve.conf

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

1
2
3
[root@svn conf] # pwd
/application/svndata/sadoc/conf
[root@svn conf] # cp authz passwd /application/svnpasswd/


改权限

1
2
3
4
[root@svn 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
1
2
3
4
5
[root@svn svnpasswd] # chmod 700 *
[root@svn svnpasswd] # ll
总用量 8
-rwx------ 1 root root 1080 6月  15 17:17 authz
-rwx------ 1 root root  309 6月  15 17:17  passwd
1
2
[root@svn svnpasswd] # pwd
/application/svnpasswd

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

1
2
3
4
5
6
7
[root@svn 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中每个参数都要顶格写,开头不能空格

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@svn 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命令

1
2
3
4
5
6
[root@svn svnpasswd] # pkill svnserve
[root@svn svnpasswd] # ps -ef | grep svnserv
root      2628  1871  0 17:51 pts /1     00:00:00  grep  svnserv
[root@svn svnpasswd] # svnserve -d -r /application/svndata/
[root@svn 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

spacer.gifwKiom1V-o5fyiHUTAAF_4UGah9M814.jpg

wKiom1V-pBKgBijmAAEhZbZQmw4677.jpg

wKiom1V-psTiewEXAAQK9QNSaZ0486.jpg

wKiom1V-p0_DJ8eFAAHMYSb0NfM243.jpg

wKiom1V-qV-CivaaAAE7r10ha-M549.jpgwKioL1V-s2jhDbCEAAMcCxcWHgI858.jpg

wKioL1V-s3aDa4BzAAGjusI8DLw764.jpg

wKiom1V-sdfyDESmAAE_35cVMx4494.jpg

wKiom1V-soqiXSIdAAFsdPgBlXc910.jpg










本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1662124,如需转载请自行联系原作者
目录
相关文章
|
数据安全/隐私保护 Windows
如何在windows上安装部署设置SVN服务器
如何在windows上安装部署设置SVN服务器
|
弹性计算 Linux 数据安全/隐私保护
部署svnserve访问SVN
本场景带您体验如何在Centos 7.7操作系统的云服务器上通过svnserve访问模式来部署SVN。
|
Java jenkins 应用服务中间件
Jenkins:从SVN拉取Maven项目,部署Tomcat(Deploy to container)
Jenkins:从SVN拉取Maven项目,部署Tomcat(Deploy to container)
150 0
Jenkins:从SVN拉取Maven项目,部署Tomcat(Deploy to container)
|
运维 Java 应用服务中间件
|
网络安全 数据安全/隐私保护
|
测试技术 Linux 数据安全/隐私保护
|
数据安全/隐私保护
|
Web App开发 Apache 数据安全/隐私保护