zoukankan      html  css  js  c++  java
  • SVN部署与简单使用

    原文发表于cu:2016-05-24

    参考文档:

    1. http://www.tuicool.com/articles/Yv2iyu7
    2. http://www.centoscn.com/CentosServer/ftp/2013/1217/2244.html
    3. http://sxlkk.iteye.com/blog/2264819
    4. http://blog.csdn.net/fax5201314/article/details/38020547

     svn服务器有2种运行方式:

    1. 独立服务器; (例如:svn://x.x.x.x/xxx)
    2. 借助apache(例如:http://x.x.x.x/xxx)

    此文档基于独立服务器部署,不依赖apache

    svn存储版本数据也有2种方式:

    1. BDB
    2. FSFS

    BDB方式在服务器中断时,有锁住数据的可能,FSFS方式相对安全,本文档部署FSFS模式。

    一.环境

    Server: CentOS-6.7-x86_64

    Server IP: 172.18.11.212

    Client: Win7 x86_64

    二.软件获取

    Server

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

    1.9.3版本下载:http://apache.fayea.com/subversion/subversion-1.9.3.tar.bz2

    Client

    TortoiseSVN官网:http://tortoisesvn.tigris.org/

    1.9.3 x86_64位置版本下载:http://netix.dl.sourceforge.net/project/tortoisesvn/1.9.3/Application/TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi

    中文语言包(版本必须匹配,否则语言包不生效,客户端设置中找不到):

    http://pilotfiber.dl.sourceforge.net/project/tortoisesvn/1.9.3/Language%20Packs/LanguagePack_1.9.3.27038-x64-zh_CN.msi 

    三.安装svn 

    1. 准备

    系统检查

    #查看服务器系统是否已经安装svn
    #方式1
    rpm -qa | grep subversion
    
    #方式2,查看是否有执行文件
    ll /usr/bin/svn* 
    
    #方式3,如果有执行文件,查看版本
    svnserve –version

    依赖包

    常规编译包

    yum install autoconf libtool gcc gcc-c++ -y

    openssl(optional)

    #openssl主要在客户机上通过serf使用或在apache服务器使用。
    #检测
    find / -name opensslv.h
    
    #如果找不到可以进行yum安装或源码安装(略)
    yum install openssl openssl-devel –y

    安装之后找到opensslv.h的所在目录,编译svn时使用" --with-openssl="带上路径。

    zlib(必需)

    #zlib主要用作svn的二进制差异算法,算法取决于zlib压缩。
    #检测
    rpm qa | grep zlib*
    
    #如果找不到可以进行yum安装或源码安装(http://zlib.net/,也可通过svn解压后的脚本获得)
    yum install zlib zlib-devel –y

    编译svn时使用" --with-zlib="带上路径(针对非默认路径的源码安装)。

    2. 安装svn

    解压

    #将下载的subversion-1.9.3.tar.bz2放置于/usr/local/src目录,
    cd /usr/local/src
    tar -jxvf subversion-1.9.3.tar.bz2
    cd subversion-1.9.3

    配套依赖包

    #在subversion-1.9.3目录内有1个可执行脚本get-deps.sh,可以下载版本相关的依赖包;
    #执行之后subversion-1.9.3文件夹多出了apr,apr-util,zlib,serf(与客户端通过apache服务访问svn相关),sqlite-amalgamation等文件夹,其中apr,apr-util,zlib是subversion必需依赖包,系统中可能已安装,但版本可能不匹配(尤其是apr,apr-util,所以使用此脚本下载的依赖包最佳)。
    ./get-deps.sh

    apr/apr-util

    cd apr
    ./configure --prefix=/usr/local/apr
    make
    make install
    
    cd ../apr-util
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
    make
    make install

    编译安装

    #不使用bdb方式,预编译时可能会有告警
    cd ..
    ./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db
    make
    make install

    环境变量

    #将svn的命令目录加入环境变量
    vim /etc/profile
    
        export PATH=/usr/local/svn/bin:$PATH
    
    source /etc/profile
    
    #或者采用软链接的方式将svn的命令加入到环境变量中,如下
    ln -s /usr/local/svn/bin/* /usr/bin/

    验证

    #返回版本信息即成功
    svnserve --version

    3. 部署svn

    创建版本库

    #创建仓库根目录
    mkdir -p /svn
    
    #创建版本库svntest,如果有多个项目可建多个版本库
    mkdir -p /svn/svntest
    svnadmin create /svn/svntest

    版本配置库文件

    #版本库svntest的配置文件目录
    cd /svn/svntest/conf/
    
    vim svnserve.conf
    #取消general项目下如下几行的注释;注意:每一行的都要顶头,不能有空格,否则报错
    #27/36/47行可以使用相对路径(passwd/authz默认为版本库conf下文件,svntest为版本库svntest根目录),也可以指定绝对路径
    19 anon-access = none                #必须设置,否则所有用户不用密码就可以访问
    20 auth-access = write
    27 password-db = passwd
    36 authz-db = authz
    47 realm = svntest

    用户配置文件

    cd /svn/svntest/conf/
    
    vim passwd
    
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    
    #设置登录账号与密码
    #对用户配置文件的修改立即生效,不需要重启服务
    testuser = testsecret

    权限配置文件

    #除如下修改外,默认配置可不变
    cd /svn/svntest/conf/
    
    vim authz
    #设置admin组,用户testuser加入admin组,1个用户组可含多个用户,用逗号隔离
    [groups]
    admin = testuser
    
    #设置admin组对版本库svntest根目录及以下有读写权限,也可以针对单个用户设置,如 testuser = rw
    [svntest:/]
    @admin = rw
    
    #权限配置文件中的账户必须已在用户配置文件中定义,对权限配置文件的修改立即生效,不需要重启svn服务

    authz文件语法

    用户组格式

    [groups]

    = ,

    其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔

    版本库目录格式

    [<版本库>:/项目/目录]

    @<用户组名> = <权限>

    <用户名> = <权限>

    其中,方框号内部分可以有多种写法:

    [/],表示根目录及以下,根目录在svnserve启动时指定的,[/]表示对仓库根目录有设置权限;

    [版本库:/] 表示对版本库xxx设置权限,如上文指定的svntest版本库;

    [版本库:/项目] 表示对版本库xxx中的某项目设置权限;

    [版本库:/项目/目录] 表示对版本库xxx中的某项目的某目录设置权限;

    权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户;

    权限可以是w、r、wr和空,空表示没有任何权限

    启动svn

    # -d表示以daemon方式运行;
    # --listen-port指定监控端口,不指定时默认是3690端口,通过端口可开启多个svn库;
    # -r指定仓库根目录,注意不是某版本库根目录,根目录的设置与客户端登录地址有关联,如果设置不当,可能会导致登录的诸多问题
    svnserve -d --listen-port 5690 -r /svn/
    
    #验证
    ps aux | grep svn
    
    #停止svn
    killall svnserve

    开机启动svn 

    # 注意修改shell中的相关设置,如变量SVN_HOME,端口等
    # 请不要删除# chkconfig: - 85 15与# description: svn server,否则无法使用chkconfig加入服务,会提示service svn does not support chkconfig
    vim /etc/rc.d/init.d/svn
    
    #!/bin/bash
    # chkconfig: - 85 15
    # description: svn server
    
    SVN_HOME=/svn
    if [ ! -f "/usr/local/svn/bin/svnserve" ]
    then
    echo "svnserver startup: cannot start"
    exit
    fi
    case "$1" in
    start)
    echo "Starting svnserve…"
    /usr/local/svn/bin/svnserve -d --listen-port 5690 -r $SVN_HOME
    echo "Finished!"
    ;;
    stop)
    echo "Stoping svnserve…"
    killall svnserve
    echo "Finished!"
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: svn { start | stop | restart } "
    exit 1
    esac
    
    #赋予启动脚本权限
    chmod 755 /etc/rc.d/init.d/svn
    chkconfig --add svn
    chkconfig --level 35 svn on
    
    #也可以简单处置,如编辑rc.local文件
    vim /etc/rc.d/rc.local
    /usr/local/svn/bin/svnserve -d –listen-port 5690 -r /svn

    iptables

    #打开相应的端口,保存iptables设置
    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5690 -j ACCEPT
    /etc/rc.d/init.d/iptables save

    四.客户端TortoiseSVN

    安装TortoiseSVN客户端及语言包,访问路径svn://ip:port。

    以下是简单的使用教程。

    数据导入

    选择本地需要导入到服务器端的文件目录,,右键—>TortoiseSVN导入,如下:

    输入版本库地址,

     首次使用需要输入用户名/密码,

    数据检出

    选择需要检出的目录,鼠标右键,SVN检出 -->导出

     填写导出版本库URL与需要导出的目录,

    更新与提交

    如果版本有更新,选择相应的目录,右键-->SVN更新;

    如果本地做了更改,需要上传到服务器,选择相应的目录,右键-->SVN提交。

    建议每次本地要做更新提交时,先SVN更新到服务器端最新版本,在最新版本上做本地修改再提交。

    添加文件/目录

    如果在检出目录内新增了文件/目录,需要先添加,再SVN提交到版本库,如下,

     如添加的文件符号变更如下,然后才能SVN提交到版本库。

    删除文件/目录

    如果需要删除服务器端文件/目录,不能使用本地删除,对删除的文件/目录,右键-->TortoiseSVN-->删除,回到上级目录,SVN提交

  • 相关阅读:
    Java言语与C言语有哪些不同
    只会增删改查的Java程序员该如何发展
    java“单根继承结构”
    Java编程领域你需要懂得技术名词解释
    HTTP相关工具类/协助类分享
    说说Java到底是值传递仍是引用传递
    Java自定义ClassLoader实现
    深化详细分析java的发展前景!
    2020Java面试题及答案,命中率高达90%
    Python爬虫详解,每个步骤都给你细致的讲解(附源码)
  • 原文地址:https://www.cnblogs.com/netonline/p/7413741.html
Copyright © 2011-2022 走看看