SVN
版本管理工具管理着随时间改变的各种数据
像普通文件服务器或者ftp服务器,但是,SVN会备份并记录每个文件每一次的修改记录
Subversion官网:
http://subversion.tigris.org/
svn客户端: http://tortoisesvn.net/
svn中文网站: http://www.iusesvn.com/
中文常见问题解答FAQ:http://subversion.apache.org/faq.zh.html
官方手册:http://svnbook.red-bean.com/ 中英都有
常见的版本管理软件工具:
Vss cvs SVN git
Git断网时可以本地管理,当网络好时再自动同步,git是linuse开发的,和linux系统亲密度更好
SVN断网时则不能管理
Svn访问方式:
1,独立服务器访问
访问地址如:svn://svn.etiantian.org/sadoc <===通过tcp/ip自定义协议访问svnserve服务器
2,借助apache等http服务
访问地址如:http://svn.etiantian.org/sadoc <===通过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
[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用户随便看账号密码文件
[root@linux svnpasswd]# chmod 600 passwd
[root@linux 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
设置用户子项目管理和权限:
[root@linux 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 端程序:http://tortoisesvn.net/downloads.html
下载后安装软件,再建一个文件夹,右击update即可,客户端配置很简单,不会配时网上教程一大堆
linux系统为客户端用法:
[root@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。
[root@linux sadoc]# ls
01 22.doc clipboard.png stu01 stu02
详细参数用法:
[root@linux svnpasswd]# svn --help <===查看参数意思和用法