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.大型企业的代码发布 熟悉制度流程图,逻辑方案 业务变更管理