1 SVN
1.1 SVN概述
SVN是Subversion的简称,是一个开放源代码的版本控制系统,其设计目标是取代CVS。简单来说SVN就是用于多个人共同开发一个项目。
SVN是一种集中式文件版本管理系统。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。
集中式文件版本控制器:将所有的文件都交由服务器来进行统一的管理。既然是有服务器的,那么就需要联网进行操作。
为什么要使用SVN:如果我们没有用SVN的话,那么我们只能在团队中互相拷贝对方的代码来完成我们的项目。
1.2 SVN工作原理
**模拟多人开发准备:
在桌面创建zhangsan和lisi两个文件夹,内部都放着各自的eclipse和workspace
安装SVN服务端程序
**
1.3 SVN服务器安装
直接双击安装,按照默认安装。
下面红色的是服务器代码仓库,下面的https不要选
SVN服务器的界面
1.4 SVN账户配置
打开VisualSVN Server
右击Users创建账户,创建zhansan,lisi2个账户
创建一个教育组,右击Groups创建education组,将zhansan,lisi添加到成员中。
1.5 SVN创建代码目录结构
右击Repositories创建education项目,选择生成Single-project三个目录文件
点击下一步,选择Customize permissions,将education小组添加,然后选择全选为Read/Write.
生成的仓库如下:
- trunk为主开发目录 =trunk存放正在开发的版本
- branches为分支开发目录 =branches存放以前发布的版本
- tags为tag存档目录(不允许修改)
1.6 取出https
右击Server选择属性,之后选择Network,去掉勾选
1.7 在浏览器访问trunk目录
访问路径:http://DESKTOP-xxxxx/svn/education/trunk
注意:计算机名DESKTOP-xxxxxx可以改为你的ip地址
右击truck可以直接copy URL路径
2 SVN开发流程
2.1 在Eclipse中安装Subclipse
- 在Eclipse安装个subclipse插件
- 找到Eclipse的应用市场进行搜索subclipse
- 点击Eclipse的Help菜单,可以看到Eclipse Marketplace
- 安装完后重启Eclipse
点继续,这里提示有未签名的内容,不用管,继续点OK就行了
重启
2.2 把trunk目录下载到本地来
右击-new-other-svn-从svn检出项目
2.3 在trunk中放个项目代码
- 创建一个动态web项目之后,找到workspace的文件夹,将web项目拷贝到trunk中,然后提交
- 提交是右键trunk -> Team ->提交
- 提交后在svn服务器就可以看到代码了
2.4 删除eclipse中的trunk【到这一步的操作都是项目经理负责,经理操作】
2.5 重新从服务器下载项目代码
右击svn-从svn检出项目,新建一个URL,**注意:**此时的URL中包含我们创建的项目名
最后效果
2.6 项目开发
- 写一些代码然后提交到服务器
- 修改些代码后提交到服务器
- 调出Synchronize查看项目情况
- 文件修改都可以查看
2.7 显示资源历史记录
右键项目-Team-显示资源历史记录
3 合作开发
3.1 创建文件夹lisi
- 里面安装Eclipse,创建workspace
- 在Eclipse中同样安装插件Subclipse
3.2 以lisi的账号下载【checkout】项目代码
- 导出后会报错,因为没有Tomcat中的Java包
- 然后右键运行项目,此时会报错需要添加Tomcat。
3.3 list添加修改文件在提交服务器
- 提交后既可以看到下面lisi修改代码的情况
3.4 zhansan从服务器更新到最新代码
3.5 模拟文件冲突【掌握】
- 确保zhansan和lisi的代码都是服务器最新的代码
- zhansan和lisi同时修改某一个文件
- zhansan先上传,【比如zhansan先实现了某个业务逻辑】
- 然后lisi修改了同一个文件或者不同文件,此时不会成功。
因为此时lisi的代码版本是5,服务器的代码版本是6,低版本的代码不能提交到高版本的代码中。需要先把lisi的代码更新带最新的版本,然后进行代码冲突的合并。
- 删除冲突生成的文件,然后就可以提交了
一些补充的面试知识点:
你在公司使用什么来管理代码版本控制
SVN-Java开发,SVN用的多
使用SVN时候,你觉得什么事情是比较重要/提交时要注意什么事项
提交时,先更新服务器代码
为了可以提交成功,解决代码冲突
GIT
Eclipse中SVN帐号的保存路径:
C:\Users"你的用户名"\AppData\Roaming\Subversion\auth
如果提交代码时,记住了密码,把auth下面文件删除即可
3.6 zhansan从服务器更新到最新的代码
4 创建分支
分支是用来备份已经发布的版本
一个软件功能是不断完善
一开始就开发1.0版本
如果1.0的版本开发完,上线(发布),给客户用,给1.0代码进行备份
进行2.0的开发
Trunk为 正在开发版本
4.1 zhansan建个1.0版本分枝
- 现在branches下面创建一个1.0的文件夹
- 然后选择Team-分支/标记来创建分支
4.2 zhansan在trunk下进行2.0版本的开发
- 随意添加个功能然后提交
4.3 然后切换到1.0分支中进行bug修复并提交
如果此时用户反馈1.0版本当中出现了bug,此时可以切换到1.0版本
4.4 然后继续切换到trunk进行2.0的开发
- 在前面修改bug的文件中,任意修改下代码,然后提交
4.5 合并1.0分枝
现在branches文件夹下面创建一个2.0的文件夹
然后Team-合并
合并完后删除多余的文件,再提交上传即可
开发时SVN使用时间
下午下班提交一次代码到服务器
上班更新服务器最新代码
解决冲突:
A,B两个开发
A下午先提交,B就要更新代码,解决冲突,才能提交