svn版本控制软件学习笔记
1.svn版本控制软件
- 为什么需要使用svn?
-
解决之道
- SCM:软件配置管理
所谓的软件配置管理实际是对软件源代码进行控制和管理
- CVS:元老级产品
- VSS:入门级产品
- clearCase:Ibm公司提供技术支持
- SVN:主流产品
- svn是什么?
SVN的全称是subversion,SVN是版本版本管理工具,是CVS接班人,版本控制软件可以解决协助开发、远程开发和版本回退三个问题。
特点:操作简单、入门简单、跨平台操作 。
svn是输入C/S服务类软件,有客户端和服务端。
下载地址:
服务端软件:(VisualSvn) http://www.visualsvn.com/
客户端软件:(Tortoisesvn) client: http://tortoisesvn.net/downloads
2.SVN安装
-
svn服务端
- checkout(检出)
- update(更新)
- Commit(提交、上传)
- 服务端软件的安装(VisualSvn)
服务端软件存储于软件/服务器端
- 1).双击服务端软件,安装按照教程一步步的安装即可 SVN安装教程 注意:安装的时候,不要出现中文、特殊符号即可。
- 2).下一步继续.
- 3).点击下一步
- 4).下一步继续
- 5).下一步继续
- 6).下一步install
- 7).下一步
- 8).安装好的VisualSvn如下:
- 服务器端配置工作:
步骤一:创建一个项目
- 首先在svn服务端创建一个公有目录WebApp做为项目目录.
- 在WebApp文件下简历Shop。目前还只是文件夹,还需要和svn产生联系
- 创建版本仓库,基本语法
svnadmin create Shop 文件夹路径(shop仓库)
- 在DOS命令行下输入 svnadmin create Shop 文件夹,如果配置成功,那么Shop应该多了6个文件夹.
- 步骤二:服务器监管:
- Apache—> http://localhost:8080 或(ip地址)访问到htdocs目录下相关文件(监管)
- SVN—> svn://localhost或(ip地址) 访问到相关的数据仓库(如shop仓库)
基本语法如下:
svnserve -d(后台运行) -r(监管目录) 仓库路径
如:svnserve -d -r D:/SvnServer/WebApp/Shop
通过以上指令,我们的svn://localhost或ip地址就可以直接指向shop版本仓库.
- 步骤三:SVN的权限控制
默认情况下,svn服务器是不允许匿名用户上传文件到服务器端的,所以必须更改项目的相关配置文件.
svn的权限都在文件夹conf中.
打开svnserver.conf ,找到 #anon-access = read (19行)修改为 anon-access = write
4.SVN客户端的配置
- 获取软件安装包(TortoiseSvn),确认操作系统位数.
- 傻瓜式安装,注意:记得重启一下电脑即可,否则svn图标无法显示.
- 出现如下图标,表示安装成功.
- 还可以安装对应的汉化包.
双击运行语言包,系统会自动寻找之前TortoiseSvn软件安装目录,自动安装,安装后可以进行设置.
- 配置完之后第一次牵手,使用客户端软件连接svn服务器:
- 首先在你的项目目录鼠标右键->TortoiseSVN->版本浏览器->输入svn服务器地址
Svn:://svn服务器地址->shop项目(仓库)
或file:///D:/SvnServer/WebApp/Shop
- checkout(检出)
- 打开隐藏功能如果能看到.svn这个文件夹就说明客户端和服务端连接起来了,检出成功;
5.SVN 使用的详解
- 三大指令
- checkout 检出操作:
1).连接到服务器
2).第一次链接的时候更新服务器端数据到本地.
注意:checkout只在第一次链接时操作一次,以后如果进行更新操作使用update更新指令.
- commit提交代码.
- update更新操作(右键更新操作即可自动更新最新版本到本地).
可以试试经理和新员工两操作实践.
- 图标集的含义
- 常规:表示服务器和客户端数据完全同步时;
- 冲突:表示当客户端提交的文件与服务端数据有冲突,系统显示为冲突图标.
- 删除:表示当服务器端数据已删除,那么客户端该文件将显示删除图标.
- 增加:表示当我们编写文件已添加到提交队列,那么系统会显示增加图标.
- 无版本控制:表示我们编写文件没有添加到上传队列.
- 修改:表示客户端文件有修改但没提交.
- 只读:客户端文件以只读形式存在时,将自动显示以上图标.
- 锁定图标:服务器端已锁定,客户端显示忽略图标.
- 忽略:客户端文件已忽略,不需要进行提交上传.
- 忽略功能
忽略功能就是有些文件不想分享到服务器,仅仅是给自己看的内容,应该将该文件或该类型文件添加至忽略列表:
- 忽略某个文件
- 忽略某个类型的文件
- 版本回退
- 什么是版本回退?
有些时候,软件的运行可能使得开发者或使用者不满意,需要使得把当前版本退回至之前版本.
- 每次修改的时候之后,提交的时候需要写好备注.
- 但是我又想恢复到某个版本:
- 可以根据日志的信息选择要回退的状态:
回退后效果如下:
再也不担心错误删除了吧,前提是需要commit你的代码.
- 版本冲突
- 什么是版本冲突?
在实际开发中,如果两个人同时修改某个 文件就会产生版本冲突问题.
- 模拟冲突问题.
当两个人同时修改一份文档的时候就可能发生冲突
- 模拟以上过程出现如下错误提示:
- 避免版本冲突:
合理分配项目开发时间,比如错开开发时间
合理分配项目开发模块,比如错开开发模块
-
通过svn解决版本冲突问题,步骤如下:
- 更新服务器数据到本地
index.php: 表示整合后的index.php文件
index.php.mine: 表示小强修改后的index.php文件
index.php.r6: 表示09:00更新时的index.php(起始状态)
index.php.r7: 表示旺财修改后的index.php文件
- 删除除index.php外的三个带问好的文件
- 修改整合index.php冲突文件
- 重新提交数据至svn服务器端,即可解决svn版本冲突问题.
6.配置多仓库与权限控制
- 配置多仓库
在实际开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢?
通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,而不能同时监管多个仓库.
答:可以通过监管WebApp总目录来达到监管所有仓库的目的.
svnserve -d(后台运行) -r(监管目录) WebApp项目总目录
打开Dos窗口输入如下指令:
svn://localhost 或ip地址来访问D:/svn/WebApp目录
如果需要访问shop项目或webchat项目:
shop项目: svn://localhost/Shop
Wechat项目: svn://localhost/Wechat
- 权限限制
- 如果需要使用权限控制有一个前提:必须首先开启权限功能.
在每一个仓库中都有一个conf文件夹,里面有三个文件,如下:
- authz: 授权文件,告诉用户有哪些权限
- Passwd: 认证文件,标识当前svn系统中某个仓库具有哪些用户及相应的密码.
-
默认情况、以上两个文件都是禁用的,必须要开启上面两个文件,svnserve.conf配置文件,具体开启步骤如下:
- 注释匿名用户可读写的权限:
- 开启认证文件和授权文件
- 编写认证文件,定义用户和密码:打开passwd
- 编写授权文件:打开authz文件进行分组+授权
- 测试是否成功.
7.svn的配置和管理
- 配置服务器的自启动服务
sc create SVNService binpath = “D:\SvnServer\bin\svnserve.exe --service -r D:/svnroot” start= auto
在cmd中输入相关命令: sc create 服务名称 binpath="svnserve.exe --service -r D:/svn/WebApp" start=空格 auto
创建系统服务,服务名SVNService
- 步骤如下:
- 打开运行,输入cmd,打开DOS环境(请使用超级管理员)
输入以下指令:
- 在控制面板->管理工具->服务找到SVNserver
- 双击运行,启动SVNService
- 运行成功,svn监管服务开发成功(以后就不用每次开机还要去Dos下输入指令启动服务器啦)
- 使用批处理文件来停止和开启管理器
- 启动服务:net start 服务名称,比如:start.bat文件内输入net start SVNService
- 停止服务:net stop 服务名称
- 删除服务:sc delete 服务名称
以上功能在实际项目开发中经常使用,封装成为xxx.bat文件就可以减少很多工作量.
8.模拟真实场景(重难点)
- svn工作流程
- 什么是钩子程序?
- 所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改.
- 默认情况下,钩子的子目录(版本仓库/hooks)中包含各种版本库钩子模板.
post-commit.tmpl: 事物完成之后触发的钩子程序
钩子程序默认情况用批处理或者Shell指令来进行编写.
-
通过批处理指令编写钩子程序步骤:
- 指定svn服务端工作目录
设置服务端SVN路径:SET SVN="D:\SvnServer\bin\svn.exe"
- 指定web服务器工作目录
设置服务器端项目运行目录:SET DIR="D:\SvnServer\WebApp\Shop"
- 通过update指令实时更新数据到DIR目录中.
SVN update %DIR%
-
具体使用步骤:
- 第一步:复制post-commit.tmpl为post-commit.bat文件
- 第二步:填入相关批处理指令
- 第三步:在apach目录下创建Shop项目并更新SVN服务器端数据到本地.
- 第四步:更新文件到SVN服务器端,可以在Shop目录实时获取到最新数据.
- 第五步:可以通过虚拟主机形式直接访问更新文件.
9.SVN扩展程序
- 什么是BAE云引擎
- 百度应用引擎(BAE),是百度推出的网络应用开发平台。基于BAE架构,使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务.
- 开发者可以基于BAE平台进行PHP、java、python、nodejs应用的开发、编译、发布、调试.
- 如何使用BAE云引擎
- BAE地址: http://bce.baidu.com/
- 进入部署列表(BAE管理平台)
步骤如下:
1).添加部署
单击确定,创建成功如下图所示:
单击管理控制平台,如下图所示,则部署成功:
2).SVN管理
通过svn进行检出操作(之后可以向svn服务器中添加或下载相关数据)
3),提交服务(commit)
当我们的BAE服务器有数据更新时,系统会弹出以下提示:
单击快捷发布即可.