• CentOS6.5下部署SVN


    查看系统版本,安装SVN软件及创建目录

    [root@A-linux ~]# uname -r
    2.6.32-431.el6.x86_64
    [root@A-linux ~]# cat /etc/redhat-release 
    CentOS release 6.5 (Final)
    [root@A-linux ~]# rpm -qa subversion     #<===查看是否安装了SVN软件包,如果没有安装,使用下面的命令安装即可
    subversion-1.6.11-9.el6_4.x86_64
    [root@A-linux ~]# yum -y install subversion
    [root@A-linux ~]# mkdir -p /application/{svndata,svnpasswd}    #<===创建SVN目录
    [root@A-linux ~]# ll /application/
    总用量 12
    drwxr-xr-x 2 root root 4096 2月 15 16:04 svndata
    drwxr-xr-x 2 root root 4096 2月 15 16:04 svnpasswd 

    SVN常用的参数

    [root@A-linux ~]# svnserve --help               #<===以下为常用参数
    用法: svnserve [-d | -i | -t | -X] [options]
    
    有效选项:
      -d [--daemon]            : 后台模式
      -r [--root] ARG          : 服务的根目录
      --log-file ARG           : svnserve 日志文件
      --pid-file ARG           : 写进程 PID 到文件 ARG

    启动SVN服务(注意:不能使用service svnserve start 此种方式启动服务,否则会导致svn下载时出错,报svn: No repository found in 'svn://*.*.*.*/*

    [root@A-linux ~]# svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid
    [root@A-linux ~]# ps -ef|grep svn|grep -v grep
    root 6880 1 0 16:11 ? 00:00:00 svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid
    [root@A-linux ~]# netstat -lntup|grep svn
    tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 6880/svnserve 

    查看SVN其他相关命令

    [root@A-linux ~]# svn
    svn    svnadmin     svndumpfilter    svnlook    svnserve    svnsync    svnversion
    [root@A-linux ~]# svnadmin help             #<===查看子命令
    一般用法: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...]
    使用“svnadmin help <subcommand>” 得到子命令的帮助信息。
    使用“svnadmin --version”查看程序的版本号和文件系统模块。
    
    可用的子命令: 
    crashtest
    create
    deltify
    dump
    help (?, h)
    hotcopy
    list-dblogs
    list-unused-dblogs
    load
    lslocks
    lstxns
    pack
    recover
    rmlocks
    rmtxns
    setlog
    setrevprop
    setuuid
    upgrade
    verify
    [root@A-linux ~]# 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 之前版本兼容的格式

    创建新的空的版本档案库

    [root@A-linux ~]# svnadmin create /application/svndata/test      #<===注意,这里不能用mkdir创建此目录
    [root@A-linux ~]# tree /application/svndata/test           
    /application/svndata/test
    ├── conf     #<===配置文件目录
    │?? ├── authz
    │?? ├── passwd
    │?? └── svnserve.conf
    ├── db       #<===数据库目录
    │?? ├── current
    │?? ├── format
    │?? ├── fsfs.conf
    │?? ├── fs-type
    │?? ├── min-unpacked-rev
    │?? ├── rep-cache.db
    │?? ├── revprops
    │?? │?? └── 0
    │?? │?? └── 0
    │?? ├── revs
    │?? │?? └── 0
    │?? │?? └── 0
    │?? ├── transactions
    │?? ├── txn-current
    │?? ├── txn-current-lock
    │?? ├── txn-protorevs
    │?? ├── uuid
    │?? └── write-lock
    ├── format
    ├── hooks    #<===钩子脚本目录
    │?? ├── post-commit.tmpl
    │?? ├── post-lock.tmpl
    │?? ├── post-revprop-change.tmpl
    │?? ├── post-unlock.tmpl
    │?? ├── pre-commit.tmpl
    │?? ├── pre-lock.tmpl
    │?? ├── pre-revprop-change.tmpl
    │?? ├── pre-unlock.tmpl
    │?? └── start-commit.tmpl
    ├── locks    #<===锁目录
    │?? ├── db.lock
    │?? └── db-logs.lock
    └── README.txt
    
    10 directories, 28 files
    

    对SVN目录进行调整,授权

    [root@A-linux conf]# pwd
    /application/svndata/test/conf
    [root@A-linux conf]# ll
    总用量 16
    -rw-r--r-- 1 root root 1080 2月 15 16:30 authz        #<===权限管理文件
    -rw-r--r-- 1 root root 309 2月 15 16:30 passwd       #<===用户及密码文件
    -rw-r--r-- 1 root root 2317 2月 15 16:49 svnserve.conf      #<===项目档案库主配置文件
    [root@A-linux conf]# cp svnserve.conf svnserve.conf.$(date +%F)  
    [root@A-linux conf]# vim svnserve.conf    #主要修改以下4项
    # anon-access = read
    # auth-access = write
    # password-db = passwd
    # authz-db = authz
    [root@A-linux conf]# egrep -v "^#|^$" svnserve.conf   #去掉注释和前面空格,更改为以下一致,然后需要杀死svnserve进程,重启其服务(此处没有写步骤)
    #anon-access = read            #<===匿名访问=read,即允许匿名访问(为了安全,还是不开启)
    anon-access = none             #<===不允许匿名访问(生产环境不允许匿名访问)
    auth-access = write            #<===打开访问权限验证
    password-db = /application/svnpasswd/passwd      #<===统一使用此文件作为账号密码文件,最好使用全路径,开头不能有空格(必须顶格写)
    authz-db = /application/svnpasswd/authz          #<===统一使用此文件作为权限控制文件,最好使用全路径,开头不能有空格(必须顶格写)
    [root@A-linux conf]# cp authz passwd /application/svnpasswd/     #<===为了方便统一管理,把用户及密码放在svnpasswd
    [root@A-linux conf]# ll /application/svnpasswd/   
    总用量 8
    -rw-r--r-- 1 root root 1080 2月  15 17:39 authz
    -rw-r--r-- 1 root root  309 2月  15 17:39 passwd
    [root@A-linux conf]# chmod 700 /application/svnpasswd/authz /application/svnpasswd/passwd
    [root@A-linux conf]# ll /application/svnpasswd/
    总用量 8
    -rwx------ 1 root root 1080 2月  15 17:39 authz
    -rwx------ 1 root root  309 2月  15 17:39 passwd
    

    为SVN版本库创建用户授权并指定可访问的项目档案库

    [root@A-linux svnpasswd]# pwd
    /application/svnpasswd
    [root@A-linux svnpasswd]# ll
    总用量 8
    -rwx------ 1 root root 1080 2月  15 17:39 authz
    -rwx------ 1 root root  309 2月  15 17:39 passwd
    [root@A-linux svnpasswd]# vim passwd     #<===添加用户及设置密码(注意添加格式和示例要一致)
    [users]                    #<===此模块定义用户及其密码,等号前是用户,等号后是密码
    # harry = harryssecret
    # sally = sallyssecret
    test1 = test123456
    test2 = test123456
    
    注意:更改svnserve.conf需要重启服务,更改authz和passwd无需重启服务(以下非必须步骤)
    [root@A-linux svnpasswd]# kill -USR1 `cat /application/svndata/svn.pid`        #<===或使用下面的方式杀死svnserve进程
    [root@A-linux svnpasswd]# killall svnserve
    [root@A-linux svnpasswd]# ps -ef|grep svn
    [root@A-linux svnpasswd]# svnserve -d -r /application/svndata/ --pid-file=/application/svndata/svn.pid      #<===重新启动服务
    [root@A-linux svnpasswd]# cp authz authz.bak
    [root@A-linux svnpasswd]# vim authz
    [aliases]         #<===这里是别名设置
    # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Aver
    age
    [groups]         #<===主要在这个模块下配置权限
    # harry_and_sally = harry,sally
    # harry_sally_and_joe = harry,sally,&joe
    # [/foo/bar]
    # harry = rw
    # &joe = r
    # * =
    # [repository:/baz/fuz]
    # @harry_and_sally = rw
    # * = r
                        ###以下是对用户授权示例(用户必须在passwd存在)
    sagroup = test1,test2      #<===定义组示例(注意顶格写,前面不能有空格)
    [test:/]               #<===这里可以设置为其他具体的版本项目档案库,可以不用从根 / 开始,也可以从根开始
    test1 = rw                #<===读写权限,也可以单单只给r或w权限,如果为空,则没有任何权限
    test2 = r                   #<===只读权限         
    @sagroup = r           #<===如果单独对组授权,前面加@即可,如果前面是 * ,则表示所有用户
    [root@A-linux svnpasswd]# tail -12 authz
    sagroup = test1,test2
    [sadoc:/]           #<===这里可以设置为具体一个版本库,可以不用从根开始
    test1 = rw        
    test2 = r
    @sagroup = r   
    

    加入开机自动启动

    [root@A-linux svnpasswd]# echo "/usr/bin/svnserve -d -r /application/svndata" >>/etc/rc.local

    以上即是配置单个项目档案库的步骤,如需配置多个项目档案库,更改名称,重复以上某些必需步骤即可。 

    Windows版本SVN客户端访问服务端方法:安装windows版本svn客户端软件TortoiseSVN,官方地址 https://tortoisesvn.net/downloads.html ,安装完成后

    其使用方法可以看自述文件或者Google,百度,此处忽略。。。

    主要的访问方式是基于TCP/IP协议,格式:  svn://10.0.0.2:test    ,输入用户名及密码验证即可

    有关Windows下SVN客户端的使用,主要是以下几点:

    1. 提交commit
    2. 更新update
    3. 下载checkout
    4. 对比log,不同版本之间的差异

    linux下SVN客户端使用待补充。。。

  • 相关阅读:
    阿里云能耗宝助力华聚公司实现产品绿色升级
    最佳实践|从Producer 到 Consumer,如何有效监控 Kafka
    漫画 | 新一代软件架构会影响到谁?
    MongoDB :第七章:总结一下学习MongoDB的心得
    面试:第十二章:所有总结
    技术汇总:第十二章:技术总览
    接口文档:第二章:使用Swagger接口的文档在线自动生成
    为何你炒的肉又硬又柴?原来是忽略了关键1步,大厨教你正确做法
    IKEA bugs All In One
    Korean Keyboard All In One
  • 原文地址:https://www.cnblogs.com/blog-tim/p/10397958.html
Copyright © 2020-2023  润新知