zoukankan      html  css  js  c++  java
  • 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服务配置文件下。

    2)passwd:         用户名密码文件。

    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 

  • 相关阅读:
    了解 NoSQL 的必读资料
    关于什么时候用assert(断言)的思考
    这次见到了一些大侠
    NetBeans 时事通讯(刊号 # 87 Jan 12, 2010)
    动态链接库dll,静态链接库lib, 导入库lib
    新女性十得 写得了代码,查得出异常
    记录系统乱谈
    新女性十得 写得了代码,查得出异常
    fullpage.js禁止滚动
    RunningMapReduceExampleTFIDF hadoopclusternet This document describes how to run the TFIDF MapReduce example against ascii books. This project is for those who wants to experiment hadoop as a skunkworks in a small cluster (110 nodes) Google Pro
  • 原文地址:https://www.cnblogs.com/Tuzki/p/4576482.html
Copyright © 2011-2022 走看看