美文网首页
部署—USVN版本控制系统

部署—USVN版本控制系统

作者: Linux丶晨星 | 来源:发表于2019-10-26 20:35 被阅读0次

    部署—USVN版本控制系统
    2019.10.26

    1. SVN介绍

    SVN——Apache Subversion(集中式的版本控制系统)

    Git与SVN比较:

    SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别。
      SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
     Git每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。

    1、集中式版本控制系统:


      版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

    集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

    2、分布式版本控制系统:

    首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

    和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

    在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

    3、简单比较如下:

    Git与SVN的区别
    svn和git的区别,为什么使用git?

    Git优点:(一台电脑即可以是客户端,也可以是服务器;工作过程中,可以断网)
    适合分布式开发,强调个体;
    公共服务器压力和数据量都不会太大;
    速度快,灵活;
    可以离线工作。

    SVN优点:(一台的服务器控制很多客户端,使用过程中不能断网)
    管理方便、逻辑明确;
    集中式管理更能保证安全性;
    适合开发人数不多的项目开发。

    Subversion

    • 每个版本库有唯一的URL(官方地址),每个用户都从这个地址获取代码和数据;
    • 获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据;
    • 提交必须有网络连接(非本地版本库);
    • 提交需要授权,如果没有写权限,提交会失败;
    • 提交并非每次都能够成功。如果有其他人先于你提交,会提示“改动基于过时的版本,先更新再提交”… 诸如此类;
    • 冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。

    好处:每个人都可以一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限。

    缺点:中央服务器的单点故障。

    USVN

    • 这是一个用PHP编写的Web界面,用于配置Subversion存储库。其目标是消除使用命令行界面创建新的SVN项目和用户的麻烦。

    环境

    [root@usvn www]#  uname -a
    Linux usvn 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    

    关闭selinux:

    #执行命令
    setsebool -P httpd_can_network_connect=1
    
    #修改为disabled
    vim /etc/selinux/config
    SELINUX=disabled
    

    2.安装部署

    2.1 下载依赖包

    yum install subversion httpd mod_dav_svn php php-mysql mysql-server mysql-devel perl-DBI perl-DBD-mysql mod_auth_mysql
    
    php-5.4
    php-mysql-5.4
    httpd-2.4.6
    subversion-1.7
    mod_dav_svn-1.7 
    perl-DBI-1.627
    

    2.2 启动httpd、mysqld服务

    systemctl restart httpd mysqld
    systemctl enable httpd mysqld
    

    2.3 设置MySQL密码(usvn需要)

    mysqladmin -u root password 123
    

    2.4 配置svn

    #将usvn软件包下载到指定目录并解压
    cd /server/tools
    wget https://github.com/usvn/usvn/archive/1.0.8.zip
    unzip 1.0.8.zip
    
    #移动到/var/www/html/下
    mv usvn-1.0.8 /var/www/html/usvn
    
    #将代码移动到apache的站点下
    mv /var/www/html/usvn/src /var/www/html/
        
    #修改为apache的权限
    chown -R apache.apache /var/www/html/src/
    
        
    #修改Apache配置文件
    vim /etc/httpd/conf/httpd.conf
    119 DocumentRoot "/var/www/html/src/public"
    
    #追加配置
    cat >> etc/httpd/conf/httpd.conf << EOF
    <Directory "/var/www/html/src/">
            Options +SymLinksIfOwnerMatch 
            AllowOverride all
            Order allow,deny
            Allow from all
    </Directory>
    EOF
    
    #重启httpd
    systemctl restart httpd
    

    2.5 浏览器进行访问





    2.6 mysql创建usvn库表信息

    MySQL-5.7.26-安装流程

    systemctl restart mysqld.service
    create database usvn;
    grant all on usvn.* to 'usvn'@'172.16.1.%' identified by '123';
    grant all on usvn.* to 'usvn'@'localhost' identified by '123';
    flush privileges;
    


    2.7 添加配置到httpd.conf中

    <Location /svn/>
        ErrorDocument 404 default
        DAV svn
        Require valid-user
        SVNParentPath /var/www/html/src/files/svn
        SVNListParentPath off
        AuthType Basic
        AuthName "USVN"
        AuthUserFile /var/www/html/src/files/htpasswd
        AuthzSVNAccessFile /var/www/html/src/files/authz
    </Location>
        
    #重启apache
    systemctl restart httpd
    

    2.8 默认目录说明


    2.9 代码上传目录

    [root@usvn html]# ll /var/www/html/src/files/
    total 8
    -rw-r--r--. 1 apache apache 424 Oct 25 20:27 authz
    -rw-r--r--. 1 apache apache 134 Oct 25 20:17 htpasswd
    drwxr-xr-x. 3 apache apache  22 Oct 25 20:20 svn
    

    2.9 svn账户密码配置目录

    [root@usvn src]# ll /var/www/html/src/files/svn/DE_Robot/conf/
    total 12
    -rwx------. 1 apache apache 1080 Oct 25 20:20 authz
    -rwx------. 1 apache apache  309 Oct 25 20:20 passwd
    -rwx------. 1 apache apache 3090 Oct 25 20:20 svnserve.conf
    
    #创建svn仓库目录
    mkdir -p /var/www/html/src/files/svn/DE_Robot/
    
    #初始化
    svnadmin create /var/www/html/src/files/svn/DE_Robot/
        
    #查看目录
    ls /var/www/html/src/files/svn/DE_Robot/
    conf  db  format  hooks  locks  README.txt
    
    #切入到conf目录中修改用户密码
    cd /var/www/html/src/files/svn/DE_Robot/conf/
    ls
    authz  passwd  svnserve.conf
    
    #修改主配置文件svnserve.conf ,将‘#’删除
    [root@usvn conf]# egrep -v '#|^$' svnserve.conf
    [general]
    anon-access = none   #匿名用户权限(无)
    auth-access = write  #认证用户(写)
    password-db = passwd #数据库账号密码文件认证
    authz-db = authz     #角色的定义(每个用户能读哪个文件)
    realm = /var/www/html/src/files/svn/DE_Robot #仓库的根目录地址
    [sasl]
    
    配置段的含义
    #添加用户
    [root@usvn conf]# vim passwd
    [users]
    admin = 12345678    
    test = 12345678
    
    #添加授权文件([/]代表svn的根目录)
    [root@usvn conf]# vim authz 
    [/]
    admin = rw
    test = r
    
    #对svn目录下的所有文件和子目录添加Users的读写权限
    [root@usvn html]# chmod -R o+rw /var/www/html/src/files/svn/
    
    #启动svn服务
    [root@usvn conf]# svnserve -d -r /var/www/html/src/files/svn/DE_Robot/
    [root@usvn conf]# netstat -lntup|grep svnserve
    tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      17734/svnserve 
    

    3. 安装SVN客户端访问存储库

    默认安装

    选中命令行那个,然后勾选“will be installed on local hard drive”

    3.1 安装完毕后点击鼠标右键即可看到

    3.2 安装中文语言包

    3.3 创建一个SVN的仓库目录并连接服务端

    3.4 修改语言为中文

    3.5 上传代码并测试

    需要输入密码
    
    admin
    passwd
    

    3.5 查看代码是否上传成功

    [root@usvn DE_Robot]# pwd
    /var/www/html/src/files/svn/DE_Robot
    [root@usvn DE_Robot]# du -smh db
    540K    db
    
    #再次查看服务端的容量大小
    [root@usvn DE_Robot]# du -smh db
    674M    db
    

    3.6 svn的注意情况

    • 每次提交之前必须要先更新
    • 如果拉不下来,给本地文件修改名字后再拉

    4 从USVN上进行查看与下载

    负责为开发创建账号密码,然后进行局域网内的集中式的代码版本控制

    技术支持文档:

    https://yq.aliyun.com/articles/518938?spm=a2c4e.11153940.0.0.61ea62dag84tMh

    相关文章

      网友评论

          本文标题:部署—USVN版本控制系统

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