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客户端,如图一所示
图一
(2)客户端创建项目,并连接至服务端,选择创建的项目,右击,并选择“SVN checkout…”,在弹出的窗口中填入服务器信息,如图二所示,点击“OK”,在弹出的窗口中输入用户名和密码进行连接。如图三所示。
图二
图三
(3)上传文件,右击项目目录,选择“SVNcommit ”,打开如图四所示窗口,选择需要上传的目录和文件,点击“OK即可开始上传”,传送完成后会出现如图五所示界面。
图四
图五
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