美文网首页JAVA架构师之路
svn代码管理和上线方案

svn代码管理和上线方案

作者: jianfengZheng | 来源:发表于2017-09-22 12:16 被阅读231次

    svn集中式版本控制系统

    svn简介

        安装 部署 维护 排障
        运维人员搭建系统 为开发人员使用
        svn档案数据格式:BDB FSFS
        svn版本系统逻辑架构图
        svn不太适合很多人开发
        svn集中式开发系统 有较好的权限管理系统
    

    svn准备部署安装

    准备好centos环境系统

    • 使用rpm、yum(功能性,快速简单,下载rpm包)安装subversion:yum -y install subversion
    • 配置并启动svn
    mkdir -p /application/avndata
    mkdir -p /application/svnpasswd
    启动服务:svnserve -d -r /application/svndata/
    查看进程:ps -ef|grep svndata
    查看端口:netstat -lntup|grep 3690 或者 lsof -i : 3690
    
    • 创建新项目版本库sadoc
    svnadmin create /application/svndata/sadoc
    查看命令用法:svnadmin help create
    

    配置简单易用就好,配置不要太复杂

    • svn版本库配置文件修改
    备份:cp svnserve.conf svnserve.conf.ori
    修改: vi svnserve.conf
    查看修改对比:diff svnserve.conf svnserve.conf.ori
    
        < anon-access = none
        < auth-access = write
        ---
        > # anon-access = read
        > # auth-access = write
        27c27
        < password-db = /application/svnpasswd/passwd
        ---
        > # password-db = passwd
        34c34
        < authz-db = /application/svnpassword/authz
        ---
        > # authz-db = authz
        
    复制passwd、authz到/application/svnpasswd/下: cp passwd authz /application/svnpasswd/
    修改/application/svnpasswd/下的passwd、authz的权限:chmod 700 *
    
    • 为svn版本库创建用户并授权访问指定项目版本库
    配置用户:vi passwd
    [users]
        # harry = harryssecret
        # sally = sallyssecret
        oldboy = oldboy123
        gongli = gongli
        
        
    版本库目录格式:vi authz
    [group]
        sagroup = oldboy,gongli
        [sadoc:/]
        oldboy = rw
        gongli = r
        @sagroup = r
        
    重启svn:
        pkill svnserve
        svnserve -d -r /application/svndata/
    
    

    通过技术文档学外语

    • Linux客户端安装和使用
    svn客户端连接方式:
        svn://your public ip address/sadoc
        账号密码:oldboy : oldboy123
    svn在Linux中常用命令:
        1.将文件checkout到本地目录
            svn checkout path(path是服务器上的目录)
            例如:svn checkout svn://your public ip address/sadoc
        简写:svn co
        2.往版本库中添加新的文件
            svn add file
            例如:svn add test.php(添加test.php)
            svn add *.php(添加当前目录下所有的php文件) 
        3.将改动的文件提交到版本库
            svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
            例如:svn commit -m “add test file for my test“ test.php
            简写:svn ci
        4.加锁/解锁
            svn lock -m “LockMessage“ [--force] PATH
            例如:svn lock -m “lock test file“ test.php
            svn unlock PATH 
        5.更新到某个版本
            svn update -r m path
            例如:
            svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
            svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
            svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
            简写:svn up 
        6.查看文件或者目录状态
            1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
            【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】M状态一般比较多
            2)svn status -v path(显示文件和子目录状态)
            第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
            注:svn status.svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
            简写:svn st 
        7.删除文件
            svn delete path -m “delete test fle“
            例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
            或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
            简写:svn (del, remove, rm)
        8.查看日志
            svn log path
            例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
        9.查看文件详细信息
            svn info path
            例如:svn info test.php
        10.比较差异
            svn diff path(将修改的文件与基础版本比较)
            例如:svn diff test.php
            svn diff -r m:n path(对版本m和版本n比较差异)
            例如:svn diff -r 200:201 test.php
            简写:svn di 
        11.将两个版本之间的差异合并到当前文件
            svn merge -r m:n path
            例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
        12.SVN 帮助
            svn help
            svn help ci
    

    不常用的可以去网上搜索

    • svn的钩子脚本:被某些版本库事件触发的程序 写法就是操作系统中shell脚本程序的写法
        查看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
    

    上网可以查看修改用法 钩子可以实现代码分发 、同步数据 、上传文件各类检查等特殊功能

    互联网小型企业上线发布方案

    • svn的项目组织和架构方案
        svn版本库分类:分支 主线
        代码上线方式:用户--http--web服务器--ftp--开发
        核心语言:php
        特点:快速 高效 开发人员少
        50%网站出现问题和开发程序代码有关 运维责任较少
        
        建议:
        搭建LAMP环境测试开发好的网站 办公室或IDC机房的测试环境通过
        程序代码上线需要规定时间
        上线技巧 先将代码上传到网站临时目录 传完整后一步mv过去
        如严格线上更新技巧,把应用服务器从集群节点平滑下线,然后更新
    

    中大型企业上线代码发布方案

    淘宝企业代码发布方案架构图
        svn服务器:程序代码 服务配置 项目文档 设计文档 运维部署优化文档
    
        配置管理员:协调开发人员 运维人员 把svn代码build好 推送到IDC机房
    
        Jenkins:web管理平台 可以把svn里的代码自动发布到办公开发环境
    
        开发项目测试人员:测试办公开发环境
    
        办公开发环境配置:也是从svn服务器发布上去
    
        IDC环境:IDC即Internet Data Center,是基于Internet网络,为集中式收集、存储、处理和发送数据的设备提供运行维护的设施基地并 提供相关的服务 
    
    
    • 运维人员上线:大型门户网站上线 按地区分布上线
    运维上线方案
    总结:
    1.越往上走 更要熟悉流程和制度 而不是技术 要有项目负责制思想
    2.svn独立模式
    3.svn钩子应用 通过ldap统一认证
    4.大型企业的代码发布 熟悉制度流程图,逻辑方案 业务变更管理
    
    

    相关文章

      网友评论

        本文标题:svn代码管理和上线方案

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