SVN

版本管理工具管理着随时间改变的各种数据

像普通文件服务器或者ftp服务器,但是,SVN会备份并记录每个文件每一次的修改记录

Subversion官网:

 

svn客户端: 

 

svn中文网站: 

  

中文常见问题解答FAQ:

    

官方手册:IMG_261http://svnbook.red-bean.com/ 中英都有

 

常见的版本管理软件工具:

Vss cvs SVN git

Git断网时可以本地管理,当网络好时再自动同步,gitlinuse开发的,和linux系统亲密度更好

SVN断网时则不能管理

 

Svn访问方式:

1,独立服务器访问 

访问地址如:svn://svn.etiantian.org/sadoc  <===通过tcp/ip自定义协议访问svnserve服务器

2,借助apachehttp服务

访问地址如:  <===通过WebDAV协议访问支持Subversion的Apache服务器

a.单独安装apache+svn(不要用,配置麻烦,不易维护)

b.CSVN(apache+svn)是一个单独的整合的软件,带web界面管理的svn软件(网上资料很多)

3.本地直接访问

访问地址如:file:///application/svndata/sadoc  <===直接通过本地磁盘或者网络磁盘访问版本库

 SVN工作原理

Snv相当于一个特殊的数据库,因为它要管理数据,所以它上面的数据是不能直观看到的

svn存储版本数据有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统,是SVN默认安装格式)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点

SVN的服务器端安装(单独服务器形式):

[root@db02 ~]# yum -y install subversion

[root@db02 ~]# rpm -qa subversion
subversion-1.6.11-15.el6_7.x86_64
[root@db02 ~]# mkdir -p /application/svndata  <===总的svn数据目录
[root@db02 ~]# mkdir -p /application/svnpasswd  <===总的用户,密码,权限管理目录

[root@db02 ~]# svnserve -d  -r /application/svndata/  <===后台指定服务的根目录

[root@db02 ~]# lsof -i :3690

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
svnserve 27495 root    3u  IPv4 914026      0t0  TCP *:svn (LISTEN)

 

SVN参数:

[root@linux ~]# svnserve --help

用法: svnserve [-d | -i | -t | -X] [options]

 

有效选项:

  -d [--daemon]            : 后台模式

  -i [--inetd]             : inetd 模式

  -t [--tunnel]            : 隧道模式

  -X [--listen-once]       : 监听一次方式(调试用)

  -r [--root] ARG          : 服务的根目录

  -R [--read-only]         : 强制只读;覆盖版本库配置文件

  --config-file ARG        : 从文件 ARG 读取配置

  --listen-port ARG        : 监听端口

                             [方式: daemon, listen-once]

  --listen-host ARG        : 监听主机名称或IP地址

                             [方式: daemon, listen-once]

  -T [--threads]           : 使用线程代替进程 [方式: daemon]

  --foreground             : 在前台运行(调试用)

                             [方式: daemon]

  --log-file ARG           : svnserve 日志文件

  --pid-file ARG           : 写进程 PID 到文件 ARG

                             [方式: daemon, listen-once]

  --tunnel-user ARG        : 隧道用户名(默认是当前UID对应的用户名)

                             [方式: tunnel]

  -h [--help]              : 显示本帮助

  --version                : 显示程序版本信息

 

建立项目版本库:

svnadmin create /application/svndata/sadoc

(默认是FSFS格式)

修改配置:

[root@linux ~]# cd /application/svndata/sadoc/conf/

[root@linux conf]# ls

authz  passwd  svnserve.conf

[root@linux conf]# cp svnserve.conf svnserve_old.conf

[root@linux conf]# vim svnserve.conf

 12 anon-access = none

 13 auth-access = write

 20 password-db = /application/svnpasswd/passwd

 27 authz-db = /application/svnpasswd/authz

spacer.gif

[root@linux conf]# cp authz passwd /application/svnpasswd/  <===方便统一管理用户和权限

[root@linux conf]# cd /application/svnpasswd/

[root@linux svnpasswd]# ls

authz  passwd

添加用户:

[root@linux svnpasswd]# vim passwd

[users]

# harry = harryssecret

# sally = sallyssecret

test01 = 123456

stu01 = 123

stu02 = 456

更改密码文件权限:

因为是明文,不能让非root用户随便看账号密码文件

[ svnpasswd]# chmod 600 passwd 

[ svnpasswd]# ll passwd 

-rw-------. 1 root root 372 2月  24 18:04 passwd

设置用户权限:

[root@linux svnpasswd]# vim authz

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

test = stu01,stu02

# [/foo/bar]

# harry = rw

# &joe = r

# * =

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r

[sadoc:/]

test01 = rw

@test = r

设置用户子项目管理和权限:

[ svnpasswd]# vim authz

[sadoc:/]

oldboy = rw

gongli = r

@oldboy23 = r

[sadoc:/]

test01 = rw

@test = r

[sadoc:/stu01]

test01 = rw

stu01 = rw

@test = r

[sadoc:/stu02]

test01 = rw

stu02 = rw

@test = r

 

这样stu01和stu02两个用户之间都可以相互查看对方文件内容,但却只能更改自己项目目录的内容,并由test01管理员统一管理

(注:管理员在“/”的基础上创建管理员

普通用户在“/”下面的目录上创建用户

所以管理员能管理所有用户的文档,用户只能管理自己的文档)

SVN的客户端安装和配置:

windows系统为客户端用法:

下载Windows 端程序

下载后安装软件,再建一个文件夹,右击update即可,客户端配置很简单,不会配时网上教程一大堆

linux系统为客户端用法:

[ sadoc]# svn co svn://192.168.222.102/sadoc/ /sadoc/ --username=oldboy --password=oldboy123

A    /sadoc/stu01

A    /sadoc/stu01/Hydrangeas.jpg

A    /sadoc/stu01/13122301_980x1200_0.jpg

A    /sadoc/stu01/Jellyfish.jpg

A    /sadoc/stu02

A    /sadoc/stu02/12.png

取出版本 15。

[ sadoc]# ls

01  22.doc  clipboard.png  stu01  stu02

详细参数用法:

[ svnpasswd]# svn --help  <===查看参数意思和用法