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