安装配置svn
一、svn介绍
1、什么是svn
svn是非常优秀的版本管理工具,与cvs管理一样,svn是一个跨平台的开源的版本控制系统。这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器或者ftp服务器,但是不同的是,svn会记录并备份每一个文件每一次的修改更新变动。
2、svn服务端运行模式与访问方式
- 独立服务器访问: svn://svn.xxxx.com/sadoc
- 借助Apache等http服务:
1)单独安装apache+svn(不建议使用)
2)csvn(apache+svn)是一个单独的软件,带web界面管理的svn软件。 - 本地直接访问: file:///data/svn/svndate/sadoc
二、安装配置svn
1、下载安装
# yum install -y subversion
2、创建svn相关目录
#创建svn版本库数据目录
# mkdir -p /data/svn/demo1/svndata #demo1项目数据目录
# mkdir -p /data/svn/demo2/svndata #demo2项目数据目录
#创建用户密码权限目录
# mkdir -p /data/svn/demo1/svnpasswd #demo1项目用户密码目录
# mkdir -p /data/svn/demo1/svnpasswd #demo2项目用户密码目录
#初始化建立版本库,也可以理解为是一个项目,demo1-code这个目录不能用mkdir创建,svn有自己运行方式,会创建属于svn自己的文件。
# svnadmin create /data/svn/demo1/svndata/demo1-code
# svnadmin create /data/svn/demo2/svndata/demo2-code
#拷贝初始化生成的密码文件和认证文件到自定义的目录中
# cp /data/svn/demo1/svndata/demo1-code/conf/passwd /data/svn/demo1/svnpasswd
# cp /data/svn/demo1/svndata/demo1-code/conf/authz /data/svn/demo1/svnpasswd
# chmod 600 /data/svn/demo1/svnpasswd/passwd
# chmod 600 /data/svn/demo1/svnpasswd/authz
# cp /data/svn/demo2/svndata/demo2-code/conf/passwd /data/svn/demo2/svnpasswd
# cp /data/svn/demo2/svndata/demo2-code/conf/authz /data/svn/demo2/svnpasswd
# chmod 600 /data/svn/demo2/svnpasswd/passwd
# chmod 600 /data/svn/demo2/svnpasswd/authz
3、编辑svn配置文件
- demo1项目
# cp /data/svn/demo1/svndata/demo1-code/conf/svnserve.conf /data/svn/demo1/svndata/demo1-code/conf/svnserve.conf.bak #修改配置文件先备份
# vim /data/svn/demo1/svndata/demo1-code/conf/svnserve.conf
12 anon-access = none #read改为none,禁止匿名访问
13 auth-access = write #认证访问
20 password-db = /data/svn/demo1/svnpasswd/passwd #指定密码文件目录
27 authz-db = /data/svn/demo1/svnpasswd/authz #指定授权文件目录
- demo2项目
demo2项目中的配置文件同demo1类似
4、编辑密码文件
- demo1项目
# vim /data/svn/demo1/svnpasswd/passwd
[users]
demo1-admin = 123456 #用户=密码
demo1-guest = 123456
demo1-test = 123456
- demo2项目
demo2项目中的密码文件同demo1类似
5、编辑授权文件
- demo1项目
# vim /data/svn/demo1/svnpasswd/authz
[groups]
group1 = demo1-guest,demo1-test #定义一个组,名字可以随意,指定该组中的成员,用逗号分隔
[/] #定义用户针对demo1项目的权限,表示demo1项目下所有内容允许谁可以有什么权限
@group1 = r #给某个组权限,前面加@符号
demo1-admin = rw #给某个用户权限,用户名 = 权限
- demo2项目
demo2项目中的授权文件同demo1类似
6、启动svn服务
- 单版本库启动,只启动demo1
# svnserve -d -r /data/svn/demo1/svndata #-d:后台启动,-r:指定svn项目的根目录
- 多版本库启动,demo1、demo2同时启动
# svnserve -d -r /data/svn/
三、 使用svn
1、windows下使用svn
本地建立仓库: 在windows本地新建文件夹,右键 —> TortoiseSVN —> Create repository here。
下载已有仓库: windows本地文件夹中,右键 —> Checkout —> 输入svn地址(注意svn的根目录)、用户名密码。
更新本地仓库: 选中仓库,右键 —> SVN Update。
上传本地文件: 选中仓库,右键 —> SVN Commit。
添加某个文件: 选中文件,右键 —> TortoiseSVN —> add;出现加号后选中文件,右键 —> SVN Commit。
删除文件: 选中文件,右键 —> TortoiseSVN —> delete;空白处右键 —> SVN Commit。
2、linux下使用svn
将文件checkout到本地:
# svn checkout svn://192.168.56.13:/demo1/svndata/demo1-code/ /root/svn/demo1-code --username=demo1-admin --password=123456
#svn://192.168.56.13:/demo1/svndata/demo1-code/是demo1项目的svn服务器地址和根目录
#/root/svn/demo1-code/是指linux端checkout时,生成文件仓库的位置,不加这个目录的话,默认在执行命令的当前目录
# svn co #简写
添加文件至版本库
# svn add file #使用add添加文件
提文件到至版本库
# svn commit -m "commit tet file" #进行提交
# svn ci #简写
更新文件
# svn update #后面没有目录,默认将当前目录以及子目录下的所有文件更新到最新
# svn update -r 3 file #将版本库中的file文件还原到版本3
# svn update file(更新与版本库同步。提交的时候提示过期是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
# svn up #简写
加锁、解锁
# svn lock -m "lock file" file #给文件加锁
# svn unlock file #给文件解锁
查看文件状态
# svn status file #文件状态正常不显示
M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定
# svn status -v file.txt #第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人
K 4 4 demo1-admin file.txt
#svn st #简写
删除文件
# svn delete file.txt 再 svn ci -m "delete file" #推荐使用
# svn delete svn://192.168.56.101/demo1-code/file.txt -m "delete file"
查看日志
# svn log file.txt #查看file.txt文件的所有修改记录以及版本变化
查看文件详细信息
# svn info file.txt #查看文件的详细信息
比较差异
# svn diff -r 10:9 file.txt #比较file.txt文件的10版本和9版本的差异
# svn di #简写