javaweb-svn-1-60

简介

版本控制系统SVN是Subversion
SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置
拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle
或者Mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。还需要一个
用户的操作端,用于提交更新检出代码,常用的有idea的Svn插件,以及TortoiseSVN(小乌龟)。

就是多个开发者并行开发,各自有一个副本,解决代码汇总问题
主要三个步骤,A下载副本,A提交副本,B开始工作前同步(更新)副本
允许用户共享信息,而不会让他们互相干扰
在这里插入图片描述
复制-修改-合并方案(Subversion默认的模式)
每一个客户端读取项目配置库建立一个私有工作副本,用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,最终人工进行纠正
锁定-修改-解锁方案
在一个时间段里配置库的一个文件只允许被一个人修改
这种安全性更高,但是不符合并行开发模式,一般不用

svn架构

可以运行在linux上,也能win
svn服务器有2种运行方式:独立服务器和借助apache运行。一般独立的服务器
svn存储版本数据也有2种方式:BDB一种事务安全型表类型和FSFS一种不需要数据库的存储系统。
因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点,也最常用

客户端连接到服务器,本地命令传送到服务器,服务器将更改交给本地存储
客户端有命令行,图像化的

在这里插入图片描述
用到的工具
window下svn服务器VisualSVN,客户端工具TortoiseSVN以及idea svn插件

服务器VisualSVN下载和安装

http://subversion.apache.org/
官网,下载对应版本
可以指定服务器,与仓库位置,以及端口和http和https的访问方式
在这里插入图片描述
安装完成后进入主界面即可
在这里插入图片描述

仓库创建和操作

创建仓库

选择仓库-右键创建-
选择仓库数据存储类型
在这里插入图片描述
为仓库命名-选择仓库预设
在这里插入图片描述
访问权限范围
在这里插入图片描述

创建用户

在这里插入图片描述

创建用户组

,方便管理用户,添加
在这里插入图片描述

给用户或者用户组分配访问库的权限

进入仓库属性设置
在这里插入图片描述
分配用户或者用户组,设置仓库
不可连接,只读,读写,用户
在这里插入图片描述
在这里插入图片描述

测试连接

在这里插入图片描述
可以通过浏览器访问,然后输入用户名密码即可
也可以通过客户端访问

客户端访问

下载客户端
在这里插入图片描述
安装后重启电脑,激活一些功能组件

浏览仓库

新建一个文件夹右键
在这里插入图片描述
输入地址,用户名,密码,会自动缓存,就不必再次认证
如果想要清理可以选择settings
在这里插入图片描述
连接完毕后,就可以浏览仓库内容

在这里插入图片描述
checkout表示第一次从服务器同步信息
版本
在这里插入图片描述
在该目录下会出现.svn隐藏文件
新建一个文件,右键添加,会出现蓝色十字图标,右键commit
在这里插入图片描述
文件图标变成绿色,已经提交
如果此时有其他用户,进行了checkout操作,就会从服务器下载同步信息

更新到指定的版本

比如1 2 3 4版本,
在这里插入图片描述
寻找到需要的版本右键
在这里插入图片描述
当然也可以用另外一种方法
在这里插入图片描述
输入需要的版本号即可
在这里插入图片描述

删除文件

本地删除后commit一下
再次浏览文件看效果

导入导出

Import将本地资源导入到svn服务器
Export导出项目,和checkout的区别,它不存在.svn隐藏文件

冲突问题与解决

假设a文件为版本10
A对a修改上传,服务器新建了版本11,
B下载了版本10,修改上传,但是版本11已经存在因此上传失败
因此应该养成一个修改前同步文件的习惯
选择同步文件
在这里插入图片描述
得到四个文件
HelloWorld.java 服务器上的文件与本地文件合并
HelloWorld.java.mine 本地修改后的文件
HelloWorld.java.r4 修改前的文件
HelloWorld.java.r5 对方修改后的文件
解决冲突
右键合并的文件
在这里插入图片描述
左:服务器的,右:自己的,下:合并后的
看文件名字可以看出来
在这里插入图片描述
右键窗口
可以选择当前文件窗口为要编辑提交的窗口,(当前窗口信息,更新合并后的信息(显示顺序))
选择都会在下面的合并窗口中显示出来
在这里插入图片描述
在这里插入图片描述
选择后保存提交
在这里插入图片描述
然后再选择文件右键commit
版本自动递增12

idea配置svn,分享工程

配置svn

确认已经安装了TortoiseSVN.
注意安装时选择这个模组,确保存在svn.exe文件存在
在这里插入图片描述

在这里插入图片描述

分享工程

现在有了一个工程a
将工程提交到服务器端
在这里插入图片描述
添加仓库地址
选择仓库位置
在这里插入图片描述
选择格式
在这里插入图片描述

提交工程
出现图标
在这里插入图片描述

操作解释

在这里插入图片描述
1.Update Project 更新项目
2.Commit changes 提交项目上所有变化文件
3.Compare with the Same Repository Version 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑
的文件没有修改,则是灰色不可点击。
4.Show history 显示当前文件的历史记录
5.Revert 还原当前被修改的文件到违背修改的版本状态下
控制台信息
在这里插入图片描述
1.Local Changes 本地修改过的文件都会出现在这里
2.Repository svn仓库所有提交记录
3.Incoming 本地还没有更新的别人提交的代码

那么项目已经到仓库了吗?

其实项目还没有提交
提交
在这里插入图片描述
或者
在这里插入图片描述
右键项目
在这里插入图片描述

也可以提交单个文件
都会有历史记录
上传的时候导入的jar包也会上传到仓库

从服务器更新文件

类似于以往
在这里插入图片描述
当然所有的操作都有记录
在这里插入图片描述
提交,更新已经讲述
删除工程
移除工程idea
删除工程代码

checkout

将项目拉下来
进入idea
在这里插入图片描述
拉工程
在这里插入图片描述
得到工程,选择保存位置
在这里插入图片描述
选择版本

忽略文件

没有必要提交jar包,需要忽略
添加忽略文件,依次是
忽略的文件有哪些,查看
添加忽略的文件
在这里插入图片描述
选项依次是忽略的文件,忽略的文件夹,忽略的规则(表达式)
在这里插入图片描述

冲突问题与解决

依旧是版本不统一的问题,只是这次发生在idea上
当发生错误时
在这里插入图片描述
点击查看差别可以看到两方的详细信息
在这里插入图片描述
然后更新工程即可
在这里插入图片描述
点击管理,出现:自己的代码,原来的,服务器端的
在这里插入图片描述
点击
在这里插入图片描述
进行需要的代码合并即可
然后重新提交,逻辑和之前相同
在这里插入图片描述

svn服务器目录结构

创建仓库时有选项,可以指定仓库目录结构,预设三个文件夹
在这里插入图片描述
Trunk 主干目录,此目录下的文件为基准文件
Branches 用于开发的分支目录
Tags 用于发布的版本目录,里程碑

假设有一个项目a完成了,1.0版本,
编写代码的时候代码在主干目录,完成后可以打一个tag标记,标明完成了
假如后续需要添加其他功能,就可以在分支目录多建几个分支,标明不同的功能,更新tag
不用动主代码,由分支管理后续功能,tag作为版本进行迭代
或者将分支的代码更新到主干,tag继续迭代,保证历史版本可用,tag一般都是只读的。

如何打分支和标记

分支的定义规则: Project name+日期时间+功能点
Tags的定义规则 Project name+版本号 版本号定义为三段数字编号 xxx.xxx.xxx
将工程提交以后,主干代码
在这里插入图片描述

使用客户端进行操作
进入仓库存放主干代码的地址,checkout
在这里插入图片描述

打分支

为了避免混淆,本地建立文件夹
右键建立分支,按规则命名,保存到指定目录下即可
在这里插入图片描述
明确是谁的分支,从哪里来到哪里去
在这里插入图片描述
svn服务器下已经出现相应目录
在这里插入图片描述

打标记同理

主干和分支合并

先保证主干是最新的(先update),在分支这边进行操作
主干update一下
在这里插入图片描述
然后进入分支目录,选择merge
在这里插入图片描述

选择一个还是多个合并
在这里插入图片描述
目的是将主干合并到分支
也就是从主干来到分支去
在这里插入图片描述
合并大概率会产生冲突,需要人工重新检查

如果要将分支合并到主干呢?
分支要最新的,进入主干操作,同理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值