JAVA架构师之路

svn代码管理和上线方案

2017-09-22  本文已影响231人  jianfengZheng

svn集中式版本控制系统

svn简介

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

svn准备部署安装

准备好centos环境系统

mkdir -p /application/avndata
mkdir -p /application/svnpasswd
启动服务:svnserve -d -r /application/svndata/
查看进程:ps -ef|grep svndata
查看端口:netstat -lntup|grep 3690 或者 lsof -i : 3690
svnadmin create /application/svndata/sadoc
查看命令用法:svnadmin help create

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

备份: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 *
配置用户: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/

通过技术文档学外语

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

不常用的可以去网上搜索

    查看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版本库分类:分支 主线
    代码上线方式:用户--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.大型企业的代码发布 熟悉制度流程图,逻辑方案 业务变更管理

上一篇下一篇

猜你喜欢

热点阅读