1. 为什么需要SVN?
2. 什么是SVN?
SVN是Subversion的简称,是一个开放源代码的版本控制系统
特点:
操作简单、入门简单
跨平台(MacOS 、Windows、Linux)操作
支持版本回退(时间机器)
3. 软件下载
SVN是输入C/S服务类软件,有客户端和服务端。
服务器软件:VisualSVN
客户端软件:Tortoisesvn
4. 工作流程
5. VisualSVN Server安装
6. VisualSVN Server配置
6.1 创建一个项目
① 创建一个公有目录WebApp作为项目目录
② 在WebApp目录下创建shop文件夹,作为Shop<版本仓库>
③ 创建版本仓库,dos环境语法
svnadmin create Shop文件夹路径(Shop仓库)
6.2 进行服务器端监管
Apache http://localhost 或(IP地址)访问到htdocs目录下相关文件 (监管)
SVN svn://localhost 或(IP地址)访问到相关数据库仓库(如Shop仓库)
语法:svnserve -d (后台运行) -r(监管目录) 版本仓库路径
通过以上指令,svn://localhost 或(IP地址)访问到相关数据库仓库(如Shop仓库)
注意:命令窗口不可以关闭,关闭则监听失败
默认情况下,SVN服务器不允许匿名用户上传文件到服务端的,所以必须修改相关配置文件
7. Tortoisesvn 安装
软件安装包+汉化包
软件安装完成后,重启计算机,否则SVN 图标无法显示
出现此界面,安装成功!!!
安装汉化包
8. 客户端链接服务器
输入SVN服务器地址:svn://localhost
会指向监管的Shop项目(仓库)
9. SVN三大指令
9.1checkout 检出操作
- 链接到SVN服务器
- 更新服务端数据到本地
注:checkout只在第一次链接是操作一次,以后如果进行更新操作用update
9.2 commit 提交操作
提交本地数据到服务器端
10. 图标集
10.1 常规图标
当客户端文件与服务器端文件完全同步时,系统显示以上图标
10.2 冲突图标
当客户端文件与服务器端文件有冲突时,系统显示以上图标
10.3 删除图标
当服务器端数据已删除,那么客户端该文件将显示以上图标
10.4 增加图标
编写文件已添加到提交队列,那么系统将自动显示以上图标
10.5 无版本控制图标
编写文件没有添加到上传队列,那么系统将自动显示以上图标
10.6 修改图标
当客户端文件有修改但是未提交,那么将自动显示以上图标
10.7 只读图标
当客户端文件以只读形式存在时,将自动显示以上图标
10.8 锁定图标
当服务端数据已锁定,那么客户端文件将自动显示以上图标
10.9 忽略图标
客户端文件已忽略,不需要进行提交上传,将自动显示以上图标
忽略功能
有些文件不希望上传到SVN服务器,应该将文件或该类型的文件添加至忽略列表
忽略指定文件/类型
10.10 图标集的查看
11. 版本回退
12. 版本冲突
在项目开发中,如果两个人同时修改某个文件就会产生版本冲突
创建两个文件夹moni1、moni2代表两个人。这两个人同时修改a.txt文件。moni2先提交,moni1后提交。
解决方案:
①合理分配开发时间
②合理分配项目开发模块
③通过SVN解决版本冲突问题
a. 更新服务器端数据到本地
a.txt:整合后的文件
a.txt.mine:mini1修改后的结果(最后提交的那个人)
a.txt.r2:moni2更新时的a.txt(起始状态)
a.txt.r3:moni2修改后的a.txt
b. 删除除a.txt以外的三个文件
c.修改整合a.txt冲突文件
d.重新上传
13. 配置多仓库与权限控制
13.1 配置多仓库
有多个开发项目,要对多个项目进行监管
通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,不能同时将管多个仓库
可以通过总目录来达到监管所有仓库的目的
监管总目录:svn://localhost/总目录
监管某一个项目:svn://localhost/项目
13.2 权限控制
前提:开启权限功能
每个仓库都有conf文件
authz:授权文件。哪些用户具有哪些权限
passwd:认证文件。当前SVN系统中某个仓库具有哪些用户以及相应的密码
默认情况下二者时禁用的。如需使用,需要修改svnserve.conf文件
修改svnserve.conf文件
修改passwd文件
修改authz文件
提交文件时,会出现认证
14. SVN配置与管理
14.1 SVN服务
sc create 服务名 binpath=”Subversion安装目录\bin\svnserve.exe —serve -r 总项目” start=auto
sc create svn binpath=”D:\ruanjian\svn\Apache-Subversion-1.14.1\bin\svnserve.exe —service -r D:\ruanjian\svn\WebApp” start=auto
以管理员身份运行dos
14.2 创建批处理文件
启动服务:net start 名字
停止服务:net shop 名字
删除服务:sc delete 名字
可以封装成.bat批处理文件
15. 模拟真实开发环境
15.1 SVN工作流程
15.2 钩子程序
钩子就是与一些版本库事件触发的程序。例如新修订版本的创建、或者未版本化属性的修改
钩子子目录【版本仓库/hooks/】包含各种版本库钩子模板
post-commit.tmpl:事物完成后所触发的跟钩子程序
钩子程序默认情况下可以采用批处理指令或shell指令来进行编写
采用批处理指令编写钩子程序
设置SVN服务端工作的目录
set SVN = “svn安装目录\bin\svn.exe”设置WEB服务器的工作目录
set DIR = “ 某项目运行目录”通过Update指令实行更新到DIR中
SVN update %DIR%
具体使用步骤:
复制post-commit.tmpl文件并命名为post-commit.bat
填入上面介绍的相关的批处理指令
然后当SVN版本仓库中的文件更新后可以实时更新到WEB项目目录中需要注意的几个地方:
编写的钩子程序应该放在版本仓库的hooks文件夹中
SVN服务有权限操作WEB项目的目录
16 eclipse svn 的使用
16.1 VisualSVN Server
打开软件
新建用户
新建一个SVN仓库
branches版本分支,
tags标签,主要是记录一些关键时间点,便根据标签找回以前某个版本的代码
trunk主干,主干的代码始终是最新的
新建用户分组
上传代码的地址
https://LAPTOP-6JTT8IE2:8443/svn/taotao/trunk
16.2 Eclipse
subclipse安装
等待安装
代码上传
VisualSVN Server中上传代码的地址
排除不需要上传的文件
.settings文件
.project文件
.classpath文件
上传会出现莫名其妙的错误
方法一
方法二
svn检出
上传到SVN服务器,可以把eclipse上的工程给真正删掉
将工程转为maven工程
最好按照依赖的先后顺序来转
检出聚合工程的子工程