009 Linux下SVN的安装与配置(CentOS 6.8)

Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据。
这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,
它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。


本文目录:
Linux svn服务器部署
linux svn客户端命令操作
linux svn备份与恢复




一、linux svn服务器部署


1、安装svn
# rpm -qa | grep subversion
# rpm -e --nodeps 要卸载的JDK名称
# yum install -y subversion
# svnserve --version
svnserve, version 1.6.11 (r934486) 


2、创建SVN版本库
# mkdir -p /data/svn
# svnadmin create /data/svn/project
# ls /data/svn/project/
conf db format hooks locks README.txt 


3、配置SVN
# cd /data/svn/project/conf/
# ls
authz passwd svnserve.conf


文件说明:
1)svnserve.conf:  svn服务配置文件。
2)passwd:         用户名密码文件。
3)authz:          svn权限配置文件。


svnserve.conf文件
该文件配置项分为以下5项:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access: 控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db:    指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm:       指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件 


打开注释时切记前面不要留有空格,否则可能有问题,最后一行的realm记得改成你的svn目录,
配置如下:
# grep -E "anon-access =|auth-access =|password-db =|authz-db =|realm=" svnserve.conf  
anon-access = none  
auth-access = write 
password-db = passwd  
authz-db = authz  
realm = /data/svn/project 


passwd文件
作用是配置用户名和密码
# cat passwd
[users]
Admin = 123456
boco = 123456
testR = 123456
testRW = 123456
testNoRW = 123456


authz文件
格式说明:
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>


配置用户访问权限
# cat authz |grep -v '#' 
[aliases] 
[groups] 
project_rw=Admin
project_r=testR,boco


[/]
@project_rw=rw
@project_r=r
boco=rw
testRW=rw
testNoRW=
*=


[/doc]
@project_rw=rw
@project_r=r
*=


注:
rw 读写
r 读
空 无权限
* 其他用户




4、启动、停止、查看svn服务
查看:
ps -ef|grep svnserve
netstat -ntlp | grep svn
启动:
# svnserve -d -r /data/svn/project --listen-port 4000
停止:
# killall svnserve


5、测试登陆
打开TortoiseSVN软件的Repository Browser
在弹出菜单中输入:svn://192.168.10.240:4000,点击OK
输入帐号密码登陆,用户区分大小写




二、linux svn客户端命令操作
1、将文件checkout到本地目录
svn checkout path (path是服务器上的目录)
简写:svn co
例:
# svn co svn://192.168.10.240:4000/ --username=boco --password=123456
# svn co svn://192.168.10.240:4000/doc --username=boco --password=123456
指定版本的文件 
# svn co svn://192.168.10.240:4000/ --username=boco --password=123456 -r 5 


2、往本地版本库中添加新的文件
svn add file   (此命令得在checkout出来的路径里才能操作)
例如:
# cp /root/123.txt ./
把123.txt加入到本地库中
# svn add 123.txt
A  123.txt 


3、将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH (如果选择了保锁,就使用--no-unlock开关) 
简写:svn ci
例:
只提交123.txt
# svn commit 123.txt -m 'add 123.txt' 
默认提交当前目录下的所以文件 
# svn commit -m 'add 123.txt'  
也可以正则匹配文件提交 
# svn commit *.txt -m 'add 123.txt'  


4、加锁/解锁
svn lock -m "LockMessage" [--force] PATH 
例如:
# svn lock -m "lock test file" test.PHP 
# svn unlock PATH 


5、更新到某个版本
svn update -r m path
简写:svn up
例如:
如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
# svn update
将版本库中的文件test.php还原到版本200
# svn update -r 200 test.php
更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,
需要先update,修改文件,然后清除svn resolved,最后再提交commit
# svn update test.php


6、删除文件
svn delete path -m "delete test fle"
简写:svn (del, remove, rm)
例如:
# svn delete svn://192.168.1.1/pro/domain/test.php -m "delete testfile"
或者直接svn delete test.php 然后再svn ci -m 'delete testfile',推荐使用这种


7、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 


8、查看文件详细信息
svn infopath
例如:svn info test.php   #可知道路径版本,时间,提交者等信息 


9、比较差异
svn diff path(将修改的文件与基础版本比较)
简写:svn di 
例如:svn diff test.php
svn diff   -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php   #可知道修改了哪些内容


10、将两个版本之间的差异合并到当前文件
svn merge -r m:n path 
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)


11、SVN 帮助
svn help
svn help ci   


12、版本库下的文件和目录列表
svn list path  #显示path目录下的所有属于版本库的文件和目录
简写:svn ls 


13、创建纳入版本控制下的新目录
svn mkdir  #创建纳入版本控制下的新目录。
用法:
svn mkdirPATH    #效果等同:mkdir test;svn add test; 


14、恢复本地修改
svn revert:恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录 






三、linux svn备份与恢复


1、全量备份:
此处是查询工程目录的最新版本
curr=`svnlook youngest /data/svn/project/` 
svnadmin dump /data/svn/repos/test --revision 0:$curr --incremental >0-"$curr"svn.bak  
echo $curr >/tmp/svn_revision 


2、增量备份
old=`cat /tmp/svn_revision`
new=`svnlook youngest /data/svn/project/` 
svnadmin dump /data/svn/repos/test --revision $old:$new --incremental >$old"-"$new"svn.bak 


3、svn恢复
恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份,然后恢复紧挨着这个文件的增量备份。
cd /data/svn/repos/  
svnadmin create test2  
svnadmin load test2 < /data/svnback/20110719/0-1112svn.bak  
svnadmin load test2 < /data/svnback/20110719/1113-1120svn.bak 

猜你喜欢

转载自blog.csdn.net/guoyanliang1985/article/details/80090967
009