美文网首页
版本控制之SVN:安装和简单实用

版本控制之SVN:安装和简单实用

作者: 小六的昵称已被使用 | 来源:发表于2019-08-13 10:14 被阅读0次

    title: 版本控制之SVN:安装和简单实用
    categories: Linux
    tags:
    - SVN
    timezone: Asia/Shanghai
    date: 2019-02-19


    什么是SVN?

    1>.SVN(subversion)是今年来崛起的版本管理工具,与CVS一样,SVN是一个跨平台的开元的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中英资料档案库中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以吧档案回复到旧的版本,或是浏览文件的变动历史。

    2>.SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。

    3>.相对于大多数公司来说,SVN是最普及的,其他版本控制比较流行的还有GIT。

    4>.SVN是一个通用的软件系统,它不但可以用来管理程序源码,他还可以管理任何类型的文件,如文本,视频,图片等等。

    SVN的服务器运行模式与访问方式

    1.SVN服务端运行模式

    SVN常见的有三种运行访问方式

    a>.独立服务器(例如:svn://svn.yinzhengjie.com/jky);
    b>.借助Apache(例如:http://svn.yinzhengjie.com/jky);
    c>.本地直接访问(例如:file:///yinzhengjie/svndata/jky);
    

    2.svn客户端访问方式

    Subversion可以通过多种方式访问,如本地磁盘访问或各种各样不同的网络协议,但是一个版本库地址永远都是一个URL。

    方式一:“file:// ” 
            访问方法:直接版本库访问(本地磁盘或网络磁盘)
    
    方式二:“http://”
            访问方法:通过WebDAV协议访问支持Subversion的Apache服务器。
    
    方式三:“https://”
            访问方法:与“http://”相似,但是用了SSL加密。
    
    方式四:“svn://”
            访问方法:通过未认证的TCP/IP自定义协议访问svnserve服务器。
    
    方式五:“svn + ssh://”
            访问方法:通过认证未加密的TCP/IP自定义协议访问svnserve服务器。
    

    环境

    [root@centos181001 help]# cat /etc/centos-release
    CentOS Linux release 7.6.1810 (Core)
    
    [root@centos181001 help]# svnserve --version
    svnserve,版本 1.7.14 (r1542130)
       编译于 Apr 11 2018,02:40:28
    

    第一步:安装

    方法1:YUM方式安装

    1.安装subversion

    yum install -y subversion
    

    2.检查是否安装成功

    svnserve --version
    

    3.新建目录,用于存放SVN所有文件

    mkdir /home/svn
    

    4.新建版本仓库

    svnadmin create /home/svn
    

    5.添加用户:编辑以下文件并增加以下行(用户名:admin 密码:xiaoliu)

    cp /home/svn/conf/passwd /home/svn/conf/passwd.bak
    vim /home/svn/conf/passwd
    
    admin = xiaoliu
    

    6.修改svnserve.conf

    cp /home/svn/conf/svnserve.conf /home/svn/conf/svnserve.conf.bak
    vim /home/svn/conf/svnserve.conf
    
    [general]
    ### Valid values are "write", "read", and "none".
    ### 设置匿名权限为不可读、不可写
    anon-access = none
    ### 设置经过有验证用户权限为可读、可写
    auth-access = write
    
    ### 设置密码文件为passwd
    password-db = passwd
    
    ### 指定基于路径的访问控制文件名称
    ### 如果未指定authz-db,则不会执行基于路径的访问控制。
    ### 取消注释下面的行以使用默认授权文件。
    authz-db = authz
    
    ### 是否对用户名进行大小写转换
    ### “upper”(大写用户名)
    ### “lower”(小写用户名)
    ### “none”(用于比较用户名而不进行大小写转换,这是默认行为)。
    force-username-case = none
    

    7.修改authz权限控制配置文件

    cp /home/svn/conf/authz /home/svn/conf/authz.bak
    vim /home/svn/conf/authz
    
    # 定义admin组和user组,用户列表使用,分割
    [groups]
    admin = admin1,admin2
    user = user1,user2
    
    # 定义根目录的权限为admin组可读、可写,user组可读、不可写
    [/]
    @admin = rw
    @user = r
    

    8.启动SVN

    svnserve -d -r /home/svn
    

    第二步:使用SVN

    Windows安装TortoiseSVN来管理SVN

    1.下载安装包和中文补丁并安装

    https://tortoisesvn.net/downloads.html

    https://mirrors.tuna.tsinghua.edu.cn/osdn/storage/g/t/to/tortoisesvn/1.11.1/Application/TortoiseSVN-1.11.1.28492-x64-svn-1.11.1.msi
    https://mirrors.xtom.com.hk/osdn//storage/g/t/to/tortoisesvn/1.11.1/Language%20Packs/LanguagePack_1.11.1.28492-x64-zh_CN.msi
    

    2.使用以下地址检出

    svn://11.11.11.61
    

    第三步:升级成http认证服务器

    1.安装mod_dav_svn和httpd,mod_dav_svn是apache服务器访问svn的一个模块

    yum install -y mod_dav_svn httpd
    

    2.安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。

    find / -name mod_dav_svn.so
    find / -name mod_authz_svn.so
    

    3.创建web用密码文件

    http只支持加密的密码

    这里同样需要同步调整authz权限控制配置文件,因为我们上边已经设置过了,所以此步略过

    touch /home/svn/conf/webpasswd
    htpasswd -b /home/svn/conf/webpasswd admin1 xiaoliu
    htpasswd -b /home/svn/conf/webpasswd admin2 xiaoliu
    htpasswd -b /home/svn/conf/webpasswd user1 xiaoliu
    htpasswd -b /home/svn/conf/webpasswd user2 xiaoliu
    

    4.修改httpd.conf配置文件

    cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
    vim /etc/httpd/conf/httpd.conf
    

    5.修改svn目录所有者为apache

    chown -R apache:apache /home/svn/
    

    6.启动httpd服务

    systemctl start httpd
    systemctl status httpd
    

    7.打开浏览器和客户端测试

    直接浏览器打开或者SVN客户端均可打开。

    http://11.11.11.61
    

    附录: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]
      -6 [--prefer-ipv6]       : 在使用主机名称监听时,首选 IPv6
                                 [默认首选 IPv4。不支持在守护进程模式中同时使用 IPv4
                                 和 IPv6。如果需要,请使用 inetd 模式或隧道模式。]
      -c [--compression] ARG   : 用于网络传输的压缩级别
                                 [0 .. 不压缩, 5 .. 默认, 
                                  9 .. 最大压缩]
      -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外高速缓存的大小(MB)
                                 线程模型的默认值是 128,非线程模型的默认值是 16。
                                 [仅用于 FSFS 仓库]
      --cache-txdeltas ARG     : 是否对旧版本之间的差异启用缓存
                                 默认值: 否。
                                 [仅用于 FSFS 仓库]
      --cache-fulltexts ARG    : 是否对文件内容启用缓存
                                 默认值: 是。
                                 [仅用于 FSFS 仓库]
      -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                : 显示程序版本信息
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
    

    附录:svnadmin命令格式

    svnadmin help crashtest

    crashtest: 用法: svnadmin crashtest REPOS_PATH
    
    打开位于 REPOS_PATH 的版本库, 然后终止, 从而模拟一个持有版本库句柄进程的崩溃。
    

    svnadmin help create

    create: 用法: svnadmin create REPOS_PATH
    
    在 REPOS_PATH 创建一个新的空版本库。
    
    有效选项: 
      --bdb-txn-nosync         : 在提交事务时禁用fsync [BDB]
      --bdb-log-keep           : 禁用自动删除日志文件 [BDB]
      --config-dir ARG         : 从目录 ARG 读取用户配置文件
      --fs-type ARG            : 版本库类型: “fsfs”(默认)或“bdb”
      --pre-1.4-compatible     : 使用与1.4之前版本兼容的格式
      --pre-1.5-compatible     : 使用 Subversion 1.5 之前版本的格式
      --pre-1.6-compatible     : 使用与 1.6 之前版本兼容的格式
    

    svnadmin help deltify

    deltify: 用法: svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH
    
    在指定的版本范围中,对其中变动的路径增量计算。借助只储存与以前版本的差异,
    它本质上可压缩版本库。如果没有指定版本则直接对 HEAD 版本进行。
    
    有效选项: 
      -r [--revision] ARG      : 指定版本 ARG (或 X:Y 范围)
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
      -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外缓存的大小(MB)
                                 默认值: 16。
                                 [仅用于 FSFS 仓库]
    

    svnadmin help dump

    dump: 用法: svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]
    
    将文件系统的内容,以可移植“转存”格式输出到标准输出,并将反馈输出到标准错误。
    转存 LOWER 与 UPPER 版本之间的内容。如果没有指定版本,则转储所有的版本树。
    如果只有指定 LOWER ,则只转储一个版本树。如果使用了 --incremental 选项,那么
    第一个转存的版本只描述它改变的路径;否则它会描述此版本在版本库中涉及到的每个
    路径。(在任何情况下,第二个以及后续的版本,只描述这些版本改变的路径。)
    
    有效选项: 
      -r [--revision] ARG      : 指定版本 ARG (或 X:Y 范围)
      --incremental            : 以增量方式进行转存
      --deltas                 : 在转存输出中使用差异
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
      -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外缓存的大小(MB)
                                 默认值: 16。
                                 [仅用于 FSFS 仓库]
    

    svnadmin help hotcopy

    hotcopy: 用法: svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
    
    产生版本库的即时副本。
    
    有效选项: 
      --clean-logs             : 删除源版本库中多余的BDB日志文件 [BDB]
    

    svnadmin help list-dblogs

    list-dblogs: 用法: svnadmin list-dblogs REPOS_PATH
    
    列出所有的BDB日志文件。
    
    警告: 修改或删除仍在使用中的记录文件将导致版本库损坏。
    

    svnadmin help list-unused-dblogs

    list-unused-dblogs: 用法: svnadmin list-unused-dblogs REPOS_PATH
    
    列出无用的BDB日志文件。
    

    svnadmin help load

    load: 用法: svnadmin load REPOS_PATH
    
    从标准输入读取“转存”格式的流,将新的版本提交至版本库的文件
    系统中。如果版本库原先是空的,默认会将其 UUID 以流中的数值代替。
    进度报告会送至标准输出。
    
    有效选项: 
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
      --ignore-uuid            : 忽略所有流中的版本库 UUID
      --force-uuid             : 如果流中存在UUID,则设定为版本库的 UUID
      --use-pre-commit-hook    : 提交版本前调用 pre-commit 钩子
      --use-post-commit-hook   : 提交版本后调用 post-commit 钩子
      --parent-dir ARG         : 加载到版本库指定的目录中
      --bypass-prop-validation : 跳过属性校验逻辑
      -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外缓存的大小(MB)
                                 默认值: 16。
                                 [仅用于 FSFS 仓库]
    

    svnadmin help lslocks

    lslocks: 用法: svnadmin lslocks REPOS_PATH [PATH-IN-REPOS]
    
    显示位于 PATH-IN-REPOS 或其子孙上的所有锁的描述(如果没有提供 PATH-IN-REPOS,
    那么显示版本库根的信息)。
    

    svnadmin help lstxns

    lstxns: 用法: svnadmin lstxns REPOS_PATH
    
    显示所有未提交事务的名称。
    

    svnadmin help pack

    pack: 用法: svnadmin pack REPOS_PATH
    
    使用更有效的存储模型压缩版本库。
    它可能不适用于所有的版本库,此时直接结束。
    
    有效选项: 
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
    

    svnadmin help recover

    recover: 用法: svnadmin recover REPOS_PATH
    
    对版本库运行修复程序。当你遇到应当执行修复的错误指示时,请执行此命令。
    修复 Berkeley DB 需要独占访问,如果版本库被其它进程使用,它会立即退出。
    
    有效选项: 
      --wait                   : 如果版本库被其他进程占用,等待而不直接退出
    

    svnadmin help rmlocks

    rmlocks: 用法: svnadmin rmlocks REPOS_PATH LOCKED_PATH...   
    
    无条件地从每个 LOCKED_PATH 删除锁。
    

    svnadmin help rmtxns

    rmtxns: 用法: svnadmin rmtxns REPOS_PATH TXN_NAME...
    
    从版本库删除命名事务。
    
    有效选项: 
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
    

    svnadmin help setlog

    setlog: 用法: svnadmin setlog REPOS_PATH -r REVISION FILE
    
      将版本 REVISION 的日志信息设为 FILE 的内容。使用 --bypass-hooks 来避
      免触发与修改属性相关的钩子(例如,你不需要你的 post-revprop-change 钩
      子发送 email通知,或者在 pre-revprop-change 钩子中禁止了修改属性)。
    
      注意: 修订属性并未纳入版本管理,所以这个命令会覆盖以前的属性取值。
    
    有效选项: 
      -r [--revision] ARG      : 指定版本 ARG (或 X:Y 范围)
      --bypass-hooks           : 跳过版本库钩子系统
    

    svnadmin help setrevprop

    setrevprop: 用法: svnadmin setrevprop REPOS_PATH -r REVISION NAME FILE
    
      将版本 REVISION 的属性 NAME 设为 FILE 的内容。使用
      --use-pre-revprop-change-hook/--use-post-revprop-change-hook 来触发与修
      改属性相关的钩子(例如,你需要在你的 post-revprop-change 钩子中发送 email
      通知)。
    
      注意: 修订属性并未纳入版本管理,所以这个命令会覆盖以前的属性取值。
    
    有效选项: 
      -r [--revision] ARG      : 指定版本 ARG (或 X:Y 范围)
      --use-pre-revprop-change-hook : 修改属性前调用钩子
      --use-post-revprop-change-hook : 修改属性后调用钩子
    

    svnadmin help setuuid

    setuuid: 用法: svnadmin setuuid REPOS_PATH [NEW_UUID]
    
    重置位于 REPOS_PATH 的版本库 UUID。如果提供 NEW_UUID,那么它就成为版本库的
    新 UUID;否则就为版本库生成一个新的 UUID。
    [root@centos181001 help]# svnadmin help upgrade
    
    upgrade: 用法: svnadmin upgrade REPOS_PATH
    
    升级位于 REPOS_PATH 处的版本库到支持的最新方案版本。
    
    此功能为想使用新的 Subversion 特性,并且不想付出全库导出后加载数据操作
    等代价的版本库管理员提供便利。同样地,此升级操作在保持版本库完整性的前
    提下执行最少的工作来完成升级。它不担保版本库的状态与导出后加载的升级方
    案一样最优化。
    

    svnadmin help verify

    verify: 用法: svnadmin verify REPOS_PATH
    
    校验版本库中的数据。
    
    有效选项: 
      -r [--revision] ARG      : 指定版本 ARG (或 X:Y 范围)
      -q [--quiet]             : 在标准错误输出不显示进度 (仅错误)
      -M [--memory-cache-size] ARG : 用来减少冗余操作的内存中的额外缓存的大小(MB)
                                 默认值: 16。
                                 [仅用于 FSFS 仓库]
    

    附录:

    Subversion官网:http://subversion.apache.org/packages.html

    相关文章

      网友评论

          本文标题:版本控制之SVN:安装和简单实用

          本文链接:https://www.haomeiwen.com/subject/oniujctx.html