问题:① 团队开发 ② 异地协做 ③ 版本回退php
SCM(Software Configuration Management):软件配置管理html
在软件开发中,软件的配置管理主要是指对软件源代码的管理…git
cvs版本控制软件:最先期比较成熟的产品,开源奇葩产品程序员
vss版本控制软件:Visual Source Safe,入门级产品,操做简单,具备可视化界面apache
clearcase版本控制软件:IBM负责管理与维护,中坚级产品,可是其并非开源免费的,而是收费软件,价格昂贵,可是其有良好的技术支持服务器
git版本控制软件(主流):基于分布式进行架构的,主要应用于Linux平台架构
svn版本控制软件(主流):基于服务器端进行架构的,主要应用于Windows或Linux平台框架
svn是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn做为代码版本管理软件。(bae、淘宝code、开源社区oschina)分布式
SVN软件属于C/S结构软件,因此在使用时必须安装服务器端与客户端。svn
1)在服务器端安装SVN服务器端软件,配置中心服务器
2)配置中心服务器,搭建项目仓库(在SVN中,一个项目就是一个仓库)
3)项目经理开发项目的核心框架,而后经过SVN客户端软件,使用Checkout(检出)指令链接服务器,并经过Commit(提交)指令上传核心代码到SVN中的相应版本仓库。
4)程序员在我的计算机中安装SVN客户端软件,而后经过SVN地址使用Checkout(检出)指令连接服务器并更新源代码到本地。
5)项目经理若是想校检程序猿完成了哪些内容,可使用Update(更新)指令,下载服务器端代码到本地
Checkout指令:第一次与服务器连接使用一次,主要是实现服务器的链接与下载服务器端代码到本地。
Commit指令:把本地的源代码经过SVN客户端软件提交到服务器端
Update指令:把服务器端代码下载更新到本地
下载地址:http://www.visualsvn.com/
下载完成后,以下图所示:
1)双击安装VisualSVN服务器端
2)单击Next下一步继续
3)单击Next下一步继续
4)选中标准版,继续,选择安装路径(重要)
使用SVN软件有一个基本要求,其软件的安装路径:必定不能出现中文、空格或特殊字符,不然会致使SVN指令没法使用!
5)单击Next下一步,单击Install…直到软件安装完毕便可。
特别注意:服务器端软件安装完毕后,必须重启服务器,不然可能会致使SVN指令没法生效,也可使用在任务管理器中强制停止explorer.exe进程并再次建立模拟重启过程。
停止进程:
重建进程:
点击桌面开始按钮à选择运行à输出cmd,打开DOS窗口后,输入以下指令,若是能够正常显示,表明安装成功。
下载地址:http://tortoisesvn.net/downloads
下载后以下图所示:
说明:SVN客户端软件是分位数的,因此在安装前必须查看操做系统的位数。如何查看呢?
答:在桌面计算机图标上鼠标右键à选择属性,查看如下选项:
客户端软件安装其路径没有任何要求,能够安装在计算机的任一位置,安装过程请首先安装软件包,而后安装语言包便可。
特别说明:客户端软件安装完毕后,必须重启电脑,不然会致使SVN图标没法显示。
在计算机的任何位置鼠标右键,若是出现如下两个图标,表明安装成功
① 在SVN服务器上的任一位置,建立一个项目文件夹如Web
② 在Web目录下建立一个Shop文件夹做为项目目录(中级项目——Shop商城)
③ 使用SVN指令建立版本仓库,基本格式:
svnadmin create 项目目录路径
示例代码:
④ 使用SVN指令监管项目仓库,基本格式:
svnserve -d(后台运行) -r(监管仓库路径) 仓库路径
示例代码:
运行后发现,光标一直停留在下一行,不停的闪烁,其表明正在运行,请不要关闭当前DOS窗口,不然服务也会随之关闭。
DOS窗口与Linux终端使用小技巧:Tab自动补全
若是在实际应用中,咱们不记得项目或文件的名称,能够只输入前几个字母+Tab键,系统会自动帮助咱们进行补全。
① 首先在客户端计算机安装客户端SVN软件,安装完毕后必定要重启计算机
② 在虚拟主机目录建立一个空文件夹,用于创建与服务器端的连接操做(如jingli)
③ 使用SVN客户端软件链接服务器
输入要链接的SVN服务器地址
单击服务器文件夹,鼠标右键进行检出操做
检出时必定要清楚的查看路径是否正确:
若是显示如下界面,表明检出成功
① 项目经理开发项目的核心框架
② 开发完毕后,使用Commit指令提交本地代码到服务器端
第一次提交时,提示以下信息:
以上提示表明受权失败,为何呢?
答:由于服务器端默认不容许匿名用户上传权限,能够在服务器端中的配置文件中进行更改,以下图所示:
找到以下代码,更改以下所示:
去除anon-access前面的#号,并把此行代码顶格(必须顶格,不然报语法错误),更改read为write,表明匿名用户具备可读写权限,设置完成后,再次提交代码,以下图所示:
在实际项目开发中,若是服务器端的代码有更新,咱们就须要使用Update指令进行更新操做,以下图所示:
当本地文件与服务器端文件彻底同步时,系统会自动显示常规图标zz
当咱们本地要提交的文件与服务器端已存在的文件有冲突时,系统会自动显示冲突图标
当服务器端的文件已删除,那系统就会自动显示已删除图标
在无版本控制图标的基础上此文件加入了上传队列,那么其系统会自动显示增长图标
当本地新建了某个文件时,系统会自动显示此文件图标为无版本控制图标
当本地文件有修改时,那系统会自动显示修改图标
当服务器端文件设置为只读时,那么本地文件将显示只读图标
当本地文件已锁定时,那么系统会自动显示锁定图标
当某个或某类文件被忽略时,那么系统会自动显示忽略图标
有些文件不但愿上传至svn服务器,应该将该文件或该类型的文件添加至忽略列表
以上程序表明忽略流程图.xlsx文件,当下次提交时会自动忽略此文件。
以上程序表明忽略全部以.docx为后缀的文件。
有些时候,软件的运行可能使开发者或使用者不满意,这时咱们须要把当前版本退回到之前的某个版本。
① 在项目目录中的空白位置鼠标右键,以下图所示:
② 根据项目日志选择要回退的版本
③ 查看要回退的版本,以下图所示:
④ 在要回退的版本位置鼠标右键à选择复原此版本做出的修改
⑤ 回退成功后,从新Commit提交目前版本到服务器端已达到更新服务器版本操做(重要)
若是两我的对同一个文件进行修改,会引发更新冲突,如何解决,模拟版本冲突:
说明:在实际项目开发中,常常会遇到版本冲突问题,是没法避免的,那开发中如何尽可能减小版本冲突呢?
答:① 合理分配项目开发时间
旺财 上午开发
小强 下午开发
② 合理分配项目项目开发模块
旺财 产品模块
小强 文章模块
③ 使用SVN软件解决版本冲突问题
① 先更新服务器端最新代码到本地
index.php :整合后的冲突文件
index.php.mine :小强要提交的文件
index.php.r5 :最初的index.php文件
index.php.r6 :目前服务器端最新的index.php文件
② 删除除index.php文件之外其余三个文件
③ 修改与整合index.php冲突文件
④ 调整完成后,从新提交数据到服务器便可
在SVN中,一个项目就是一个仓库,可是若是按照上午所学知识对服务器进行配置则系统只能兼顾某个项目,没法同时开发多个项目。
1)Apache 监管 http://localhost:80/端口自动指向Apache目录下的htdocs文件夹
2)SVN 监管 svn://ip地址自动指向到其DOS指令监管的目录,如Shop目录
可是svn监管指令默认状况下只能监管一个目录,那若是同时开发多个项目,那么要如何配置多仓库呢?
答:能够监管仓库的上一级总目录(如Web文件夹便可)
以上程序设置成功后,咱们的svn://服务器ip地址就会自动转向到Web目录,可是Web目录并非一个仓库,因此这样是没有意义的,若是要实现监管必需要链接到数据仓库:
链接Shop仓库:svn://服务器的ip地址/Shop,如svn://127.0.0.1/Shop
链接Wechat仓库:svn://服务器的ip地址/Wechat,如svn://127.0.0.1/Wechat
例1:以Shop仓库为例,只要在检出时填写以下地址便可
例2:若是以前已经链接了其余仓库,可是如今仓库已更换了链接地址,怎么办?
答:可使用从新定位,以下图所示:
答:在实际项目开发中,咱们须要同时管理多个项目,如配置多仓库案例。若是不对项目设置相关权限,其SVN服务器端代码将很难维护。
在SVN中,若是对一个项目配置权限必需要通过三个文件的支持,
第一个文件:项目主配置文件,项目目录/conf/svnserve.conf文件
第二个文件:passwd文件,认证文件,保存了项目中的的用户名和密码
第三个文件:authz文件,受权文件,保存授予某些用户某些权限的功能
① 首先在项目的主配置文件svnserve.conf文件中,开启权限控制功能
1)注释掉anon-access代码
2)开启passwd和authz文件
开启passwd文件
开启authz文件
② 设置认证文件(passwd),添加相关的用户名和密码
③ 设置受权文件,授予某些用户某些权限
在SVN软件中其运行环境和Linux都是一致的,就是每一个用户必须属于某个用户组,设置组信息
设置完成后,为每一个组设置相关的管理权限
④ 验证权限功能是否生效
在实际项目应用开发中,若是咱们使用DOS窗口来实现对SVN服务的开启会形成不少不便。因此咱们能够把监管指令设置为系统服务。
sc create指令基本语法:
基本要求:必须使用超级管理员运行此命令
sc create 服务名称 binpath=(空格)"D:\svn\bin\svnserve.exe --service -r D:/svn/Web" start=(空格)auto(此设置服务级别为自动:开机时自动启动)
示例代码:
添加成功后,咱们能够在控制面板à管理工具à服务à找到svn服务,以下图所示:
单击启动,若是能成功启动,表明已经配置成功了。
以上指令为了操做方便,咱们还能够专门封装成批处理指令
在使用SVN软件管理软件源代码时咱们发现,SVN只能完成对代码的整合,可是没法直接查看或测试软件的源代码。
在SVN新版本中新增长了钩子程序,就能够完成上图中的管理员功能。
所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的建立,或是未版本化属性的修改。
默认状况下,钩子的子目录(版本仓库/hooks/)中包含各类版本库钩子模板。
以上程序中,咱们只须要掌握post-commit钩子程序便可(数据同步更新)
① 在svn服务器端也安装一个svn客户端软件(TortoiseSVN)
② 在服务器端的虚拟主机目录建立一个文件夹,用于接收同步数据
③ 在服务端使用客户端svn软件,检出服务器端的最新数据到本地文件夹中
注意:这个时候必定要保持客户端与服务器端的同步数据必须是一致的
④ 在svn服务器端,打开Shop目录下的hooks钩子文件夹,找到post-commit模板,更改其后缀为.bat
⑤ 删除批处理文件中的全部数据
⑥ 写入以下相关指令
1)设置服务器端SVN路径
SET SVN="D:\svn\bin\svn.exe"
2)设置服务器端项目运行目录
SET DIR="D:\server\apache\htdocs\MyShop"
3)使用update指令同步更新数据
SVN update %DIR%
等号后面不能带空格
⑦ 测试以下图所示: