svn服务的搭建与管理

一、svn的概述

1svn概述

   Svn是一款版本管理工具,一个跨平台的开源的版本控制系统,会将数据放在一个中英资料档案库中,类似FTP工具。Svn档案库会备份修改并记录每个文件每一次的修改更新变动。

2、其他的常见的版本管理工具:vss、cvs、git

3、svn与git的区别

(1)svn集中版本控制系统:

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

Svn版本控制系统工作流程:

   1)从中央库上创建一个或从主干复制一个分支

   2)从中央库check out 下这个分支的代码

   3)增加自己的代码文件,修改现存的代码或删除代码文件

   4)Commit代码,有人在刚刚的分支上提交了代码,你就会被提示代码过期

缺点:

   1)当无法连接到中央版本库的环境下,无法提交代码,将代码加入版本控制

   2)Svn无法查看代码的历史版本以及版本的变化过程

   3)Svn的备份要被封所代码数据以及所有更改的版本记录

(2)git版本控制系统

   Git由Linux开发,和Linux系统结合比较紧密,在Windows上必须使用cygwin才能使其完美工作

   Git中没有中央版本库,为了开发小组代码共享,需要搭建一个远程git仓库

   Git在开发者本地也包含了一个完整的git仓库,本地的仓库和远程的仓库在身份上是等价的没有主从之分

4、svn服务端的运行方式

(1)独立服务器

   访问地址如:svn://svn.dayi123.org/sadoc

(2)借助Apache等http服务

   1)单独安装Apache+svn(不推荐使用)

   2)CSVN(Apache+svn)是一个单独的整合的软件,带web界面管理的svn软件

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

5、svn客户端的访问方式

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

(2)http://(通过webdav协议访问支持subversion的Apache服务器)

(3)https://(与http://相似,但是用ssl加密访问)

(4)svn://(通过tcp/ip自定义协议访问svnserver服务器)

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

6、svn档案库数据格式

(1)BDB (伯克利DB):版本库可以使用的一种经过充分测试的后台数据库实现,不能通过在网络共享的文件系统上使用,伯克利是Subverion1.2版本以前的缺省版本库格式

(2)FSFS:一个专用于Subversion版本库的文件系统后端,可以使用网络文件系统。是1.2版本及其后的缺省版本格式。(FSFS虽然解决了许多问题(如并行读写共享文件)以及添加了许多功能(如运行时的事物特性),但数据存储由此变的不透明)

二、svn的安装与配置

1、安装环境:centos6.8+subversion1.6.11(yum安装)

2、安装配置svn

(1)检查svn软件程序是否已经安装

   rpm –qasubversion      #检查是否已经安装

   如果没有安装则需要安装:yum install subversion –y

(2)配置svn

   1)建立svn版本数据库存储根目录(svndata)及用户、密码权限目录(svnpasswd),

   mkdir –p/application/svndata       #数据存储根目录

   mkdir –p/application/svnpasswd     #用户密码权限目录

[root@dayi123~]$mkdir -p /application/svndata

[root@dayi123~]$mkdir -p /application/svnpasswd

   2)启动svn服务指定服务的svn根目录

    svnserver –d –r/application/svndata  #启动svn并指定根目录

    lsof –i :3690        #svn端口为3690,查看是否启动

[root@dayi123~]$svnserve -d -r /application/svndata/

[root@dayi123~]$lsof -i :3690

COMMAND   PID USER  FD   TYPE DEVICE SIZE/OFF NODENAME

svnserve 1807root    3u  IPv4  15223      0t0 TCP *:svn (LISTEN)

(3)创建svn项目

   svnadmin create/application/svndata/sadoc   #创建一个svn项目

   tree/application/svndata/sadoc            #查看创建的项目

   查看svnadmin命令的用法:

   svnadmin help

   snvadmin help create

[root@dayi123 ~]$svnadmincreate /application/svndata/sadoc    #创建项目

[root@dayi123~]$tree /application/svndata/sadoc/            #查看创建好的项目

/application/svndata/sadoc/

├── conf

?? ├── authz

?? ├── passwd

?? └──svnserve.conf

├── db

(4)svn的配置文件(存放于svn安装目录的/svndata/sadoc/conf目录下):

   authz为权限配置文件

   passwd为用户密码列表

   svnserve.conf 为svn配置文件

[root@dayi123 ~]$cd/application/svndata/sadoc/conf/

[root@dayi123conf]$ll

total 12

-rw-r--r--. 1 rootroot 1080 Apr 21 00:03 authz

-rw-r--r--. 1 rootroot  309 Apr 21 00:03 passwd

-rw-r--r--. 1 rootroot 2279 Apr 21 00:03 svnserve.conf

(5)配置svn

   1)配置svnserver.conf

[root@dayi123conf]$cp svnserve.conf svnserve.conf.bak  #修改配置前备份

[root@dayi123conf]$diff svnserve.conf svnserve.conf.bak

12,13c12,13

< anon-access =none      #不允许匿名访问

< auth-access =write      #访问时可写

---

> # anon-access= read

> # auth-access= write

20c20

< password-db =/application/svnpasswd/passwd    #认证时密码统一管理

---

> # password-db= passwd

27c27

< authz-db =/application/svnpasswd/authz        #认证时权限统一管理

---

> # authz-db =authz

  2)配置passwd

#将密码和authz移到/application/svnpasswd/

[root@dayi123conf]$mv authz passwd /application/svnpasswd/ 

#添加用户

[root@dayi123svnpasswd]$cat passwd

[users]

# harry =harryssecret

# sally =sallyssecret

dayi123 = dayi123      #passwd文件中添加用户和密码

liu = liu123

stu01 = 123456

stu02 = 123456

  3)配置authz

……

[groups]

# harry_and_sally =harry,sally

#harry_sally_and_joe = harry,sally,&joe

group_dayi123 =stu01,stu02   #进行分组

…..

#[repository:/baz/fuz]

# @harry_and_sally= rw

# * = r

[sadoc:/]            #sadoc项目设置用户权限,也可以在项目下创建子项目对用户授权

dayi123 = rw           

liuyi = r

@group_dayi123 =r   #设置组权限,组名前加@符号

   4)重启服务

[root@dayi123svnpasswd]$ps -ef | grep svn    #查看svn

root       1807     1  0 00:01 ?        00:00:00 svnserve -d -r/application/svndata/

root       1852  1704  0 00:24 pts/0    00:00:00 grep svn

[root@dayi123svnpasswd]$pkill svnserve        #杀掉svn服务                    

[root@dayi123svnpasswd]$svnserve -d -r /application/svndata/ #启动svn服务

[root@dayi123svnpasswd]$ps -ef | grep svn      #查看重启后的svn服务状态

root       1855     1  0 00:24 ?        00:00:00 svnserve -d -r/application/svndata/

root       1858  1704  0 00:25 pts/0    00:00:00 grep svn

三、安装svn客户端

1、Windows客户端安装与配置

(1)安装Windows客户端,如图一所示

                           svn服务的搭建与管理_第1张图片

图一

(2)客户端创建项目,并连接至服务端,选择创建的项目,右击,并选择“SVN checkout…”,在弹出的窗口中填入服务器信息,如图二所示,点击“OK”,在弹出的窗口中输入用户名和密码进行连接。如图三所示。

svn服务的搭建与管理_第2张图片

图二

svn服务的搭建与管理_第3张图片

图三

(3)上传文件,右击项目目录,选择“SVNcommit ”,打开如图四所示窗口,选择需要上传的目录和文件,点击“OK即可开始上传”,传送完成后会出现如图五所示界面。

svn服务的搭建与管理_第4张图片

图四

svn服务的搭建与管理_第5张图片

图五

2、svnLinux客户端的操作(svn的Linux客户端就是svn,不需要额外的安装)

[root@dayi123~]$svn co svn://172.16.251.192/sadoc /sadoc/ --username=dayi123 --password=dayi123     #将服务器上的目录下载到本地/sadoc目录

……

-----------------------------------------------------------------------

Store passwordunencrypted (yes/no)? yes

A    /sadoc/hello

A    /sadoc/hello/新建文本文档.txt

Checked outrevision 1.

[root@dayi123 ~]$ls/sadoc/   #查看下载的内容

Hello

[root@dayi123~]$svn list svn://172.16.251.192/sadoc --verbose --username=dayi123--password=dayi123           #查看服务器里面的内容

      1 dayi123               Apr 21 01:17 ./

      1 dayi123               Apr 21 01:17 hello/

[root@dayi123 hello]$touch{a..z}.html    #创建文件

[root@dayi123hello]$svn add *   #添加功能

A         a.html

A         b.html

A         c.html

……

[root@dayi123hello]$svn ci -m "dayi123 20170423"  #提交

Adding         hello/a.html

Adding         hello/b.html

Adding         hello/c.html