首页 > 技术文章 > 代码管理工具之SVN简介

-X-peng 2021-01-10 16:21 原文

之前博主介绍过优秀的代码版本管理工具Git,今天介绍下svn。

SVN是集中式版本控制系统,版本库存放在中央服务器,必须联网才能工作。

1、安装svn 

      centos:yum install subversion -y 

      ubuntu:apt-get install subversion -y 

2、创建库目录 mkdir /opt/.svn/zxkj/

      svnadmin create /opt/.svn/zxkj/

3、启动svn网络服务: svnserve -d -r /home/svn,
      其中 -d 参数让 svnserve 运行在后台,-r 参数限定了数据仓库,在网络上可以访问的地址,
      指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库。
      /home/svn指定svn数据仓库存放的目录位置。

4、检查svn服务器是否已经启动(svn默认使用3690端口):netstat -an | grep 3690。
      svn的默认端口是3690,在ubuntu里查看端口打开情况,命令是 sudo netstat -anp。
      svn服务重新启动命令为:svnserve -d -r /home/svn
      如果需要停止svn服务,则用此命令:sudo killall svnserve

5、配置文件

      cd conf/

      vi svnserver.conf 

       anon-access = none       #匿名用户权限

         auth-access = write          #认证用户权限

       password-db = passwd    #使用哪个文件作为账号文件

       authz-db = authz              #使用哪个文件作为权限文件

      vi authz  
            qianduan = ws   
            yunwei = lwj  
            chanpin = cjr
            ui =xll,wg 
            [/]   
            jyh = rw  
            @chanpin = rw   
            @yunwei = rw  
            @houduan = rw  

            [/zxkj/UI]

            jyh = rw

            @ui = rw

            @qianduan = r

            * =

      vi passwd

           jyh = jyh888

           ws  = ws888

6、设置svn服务开机启动:
      在init.d目录建立一个脚本文件svnd.sh:  cd /etc/init.d ,
      用gedit打开svnd.sh进行编辑: sudo gedit svnd.sh,
      输入svnd.sh内容如下(/home/svn 为svn仓库路径):
      #!/bin/bash
      #svnserve startup
      svnserve -d -r /home/svn
      保存退出。
      修改权限:
      update-rc.d svnd.sh defaults
      chmod 777 svnd.sh

Linux作为svn客户端:

  svn checkout svn_path local_path --username=user --password=123456

工作中使用示例:

#!/bin/bash
TIME_DIR=`date -d yesterday +%Y%m%d`
svn mkdir /root/讯代理日常巡检/${TIME_DIR}
for i in api01 api02 web01 web02 forward01 forward02 houtai;do
        SOURCE_DIR="/root/myfiles/xdaili_log/uptime/${i}/`date -d yesterday +%Y_%m_%d`_system_check.txt"
        DEST_DIR="/root/讯代理日常巡检/${TIME_DIR}/"
        cp ${SOURCE_DIR} ${DEST_DIR}
        mv /root/讯代理日常巡检/${TIME_DIR}/`date -d yesterday +%Y_%m_%d`_system_check.txt /root/讯代理日常巡检/${TIME_DIR}/${i}.txt
done
svn add /root/讯代理日常巡检/${TIME_DIR}/*
svn commit -m "" /root/讯代理日常巡检/

SVN 官网:https://subversion.apache.org/Github

SVN 源码:https://github.com/apache/subversion


推荐阅读