javaweb-svn-1-60

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
在这里插入图片描述

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100229.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • TTL与RS-485电平转换芯片MAX485/MAX3485「建议收藏」

    TTL与RS-485电平转换芯片MAX485/MAX3485「建议收藏」常用的转换芯片是MAX485(5V),MAX3485(3.3V),它们都是半双工的。     A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。下图是485抗干扰的原理:

  • Okhttp 之 okio

    Okhttp 之 okio本文是的前一篇文章OkhttpIO之Segment&SegmentPool的基础上写的,如果你没看懂前面的文章,那么看本文会相当的吃力,因为很多关键的代码都是在前面这篇文章中剖析的。ByteStringokio中添加一个类ByteString,顾名思义就是字节串,这里做一个概要的讲解,具体的实现大家可以去看源码。既然是字节串,它内部就是用一个字节数组支持的。…

  • 文科生也能学会的Excel VBA 宏编程入门(三)——合并文件

    文科生也能学会的Excel VBA 宏编程入门(三)——合并文件任务介绍在日常工作中,我们经常会遇到需要汇总多个表格的数据,将它们合并到一个表格里的情况。虽然复制粘贴大法好,但如果让你汇总几十人填报的个人信息并做成汇总表格,估计你也膜不动了。因此,这一次我们就通过VBA程序完成这个任务,从此妈妈再也不担心我数数到头秃。程序基本思路将要合并的Excel文件放到同一个文件夹中;在文件夹中新建一个Excel文件用于汇总并运行VBA程序;通过VBA程序获取…

  • java系统高并发解决方案(转载)[通俗易懂]

    java系统高并发解决方案(转载)[通俗易懂]转载博客地址:http://blog.csdn.net/zxl333/article/details/8454319一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大

  • Tomcat配置SSL证书(PFX证书)

    Tomcat配置SSL证书(PFX证书)Symantec提供免费版SSL,可快速免费申请一、什么是SSL(证书)?    SSL证书服务(AlibabaCloudSSLCertificatesService)由阿里云联合多家国内外数字证书管理和颁发的权威机构、在阿里云平台上直接提供的服务器数字证书。您可以在阿里云平台上直接购买、或者免费获取所需类型的数字证书,并一键部署在阿里云…

  • DLL注入与安全

    DLL注入与安全伊始  安全与危险是共存的。如果我们了解危险的来源以及产生的过程,对于安全防护拥有很现实的意义。  本文主要介绍dll注入的方式,意在描述危险的来源,以及危险的执行的过程,以便于我们解决危险。主体这篇文章介绍2大类:序号方式1调用API2直接修改源码1.调用API  如果要实现注入,那么需要一个目标,一个DLL,一个注入程序。原理:  代码的执行…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号