• linux svn服务器搭建、客户端操作、备份与恢复


      Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据。这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。 
    
    
    
    
    本文目录: 
    
    linux svn服务器部署 
    
    linux svn客户端命令操作 
    
    linux svn备份与恢复 
    
     
    
    一、linux svn服务器部署 
    1、安装svn 
    
    [root@yang~]#yum install -y subversion 
    
    [root@yang~]#svnserve--version 
    
    svnserve,version 1.6.11 (r934486) 
    
     
    
    2、创建SVN版本库 
    
    [root@yang~]# mkdir /data/svn 
    
    [root@yang~]# svnadmin create /data/svn/project 
    
    [root@yangproject]# ls /data/svn/project/ 
    
    conf  db  format  hooks  locks  README.txt 
    
     
    
    3、配置SVN 
    
    [root@yangproject]# cd /data/svn/project/conf/ 
    
    [root@yangconf]# ls 
    
    authz  passwd svnserve.conf 
    
     
    
    文件说明: 
    
    1)svnserve.conf:  svn服务配置文件下。 
    
    2passwd:         用户名密码文件。 
    
    3)authz:          svn权限配置文件。 
    
     
    
    svnserve.conf文件 
    
     该文件配置项分为以下5项: 
    
           anon-access:  控制非鉴权用户访问版本库的权限。 
    
           auth-access: 控制鉴权用户访问版本库的权限。 
    
           password-db:  指定用户名口令文件名。 
    
           authz-db:    指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 
    
           realm:        指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件 
    
      
    
    配置如下: 
    
            [root@yangconf]# 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文件 
    
    作用是配置用户名和密码 
    
    [root@yangconf]# cat passwd 
    
    [users] 
    
    yangyun= yangyunpasswd 
    
    test = testpasswd 
    
     
    
    authz文件 
    
    配置用户访问权限 
    
    [root@yangconf]# cat authz |grep -v '#' 
    
    [aliases] 
    
    [groups] 
    
    project_w=yangyun 
    
    project_r=test 
    
    [/] 
    
    project_w=rw 
    
    project_r=r 
    
     
    
    4、启动svn服务 
    
    [root@yangconf]# svnserve -d -r /data/svn 
    
     
    
    5、初始化svn数据 
    
    [root@yangdjango]# svn import mysite file:///data/svn/project/ -m 'initial import' 
    
    将会拷贝目录mysite到版本库的project下
    
    [root@yangdjango]# svn list file:///data/svn/project 
    
    manage.py 
    
    mysite/ 
    
    static/ 
    
    templates/ 
    
    web02/ 
    
    在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。 
    
     
    
    二、linux svn客户端命令操作 
    1、将文件checkout到本地目录 
    
    svn checkout   path(path是服务器上的目录) 
    
    简写:svn co 
    
    例: 
    
    svn co svn://115.28.24.178/project   --username=yangyun --password=yangyunpasswd 
    
    #指定版本的文件 
    
    svn co svn://115.28.24.178/project   --username=yangyun --password=yangyunpasswd -r 5  
    
     
    
    2、往本地版本库中添加新的文件 
    
    svn add   file      #此命令得在checkout出来的路径里才能操作 
    
    例如: 
    
    cp /root/123.txt./ 
    
    svn add   123.txt   #把123.txt加入到本地库中 
    
    A         123.txt 
    
     
    
    3、将改动的文件提交到版本库 
    
    svn commit   -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保锁,就使用--no-unlock开关) 
    
    简写:svn ci 
    
    例: 
    
    svn commit   123.txt -m 'add 123.txt'  #只提交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 update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 
    
    svn update   -r 200 test.php(将版本库中的文件test.php还原到版本200 
    
    svn update   test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit 
    
    简写:svn up 
    
     
    
    6、删除文件 
    
    svn delete   path -m "delete test fle" 
    
    例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete testfile" 
    
    或者直接svn delete test.php 然后再svn ci -m 'delete testfile‘,推荐使用这种 
    
    简写:svn (del, remove, rm) 
    
     
    
    7、查看日志 
    
    svn log   path 
    
    例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 
    
     
    
    8、查看文件详细信息 
    
    svn infopath 
    
    例如:svn info test.php   #可知道路径版本,时间,提交者等信息 
    
     
    
    9、比较差异 
    
    svn diff   path(将修改的文件与基础版本比较) 
    
    例如:svn diff test.php 
    
    svn diff   -r m:n path(对版本m和版本n比较差异) 
    
    例如:svn diff -r 200:201 test.php   #可知道修改了哪些内容 
    
    简写:svn di 
    
     
    
    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:$cur --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   
  • 相关阅读:
    必须为接口 System.Collections.IComparer 实现
    C#编写的windows程序随系统启动的问题
    ReportViewer导出Excel的问题
    英语听力的技巧
    Windows中无法删除文件的解决办法
    RDLC/RDL 动态报表
    Only export to PDF format from ReportViewer addin
    提高ASP.Net网站性能
    关于Spring 国际化 No message found under code 的解决方案
    Axis2中使用WSAddressing协议
  • 原文地址:https://www.cnblogs.com/zendu/p/4981241.html
Copyright © 2020-2023  润新知