javaWeb-4 SVN

 

SVNSubversion的简称,是一个自由开源的版本控制系统。

Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节

早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具,后续我们会学到。

问题: 怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?

复制-修改-合并方案(Subversion默认的模式)

在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

锁定-修改-解锁方案

在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。 此模式不适合软件开发这种工作。

  • SVN架构

Subversion支持LinuxWindows,更多是安装在Linux下。

svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。

svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

  • 使用篇(重点)

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

SubVersion 官网 http://subversion.apache.org/

  • VisualSVN创建工程目录

  • VisualSVN权限控制

创建用户

创建组

分配权限

  • 客户端-TortoiseSVN安装与使用

  • 清空svn客户端的缓存

  • Checkout 检出svn服务器上的项目

注意:检出后会有一个.svn隐藏目录

  • Commit

  • 更新到历史版本

也可以通过下面的方式来更新历史版本

  • Delete 标记删除操作,本地文件会删除,我们需要在它的父目录进行提交,才能真正从服务器删除

  • 导入导出

Import将本地资源导入到svn服务器

Export导出项目,和checkout的区别,它不存在.svn隐藏文件

  • 冲突问题与解决(重要)

多个用户同时操作同一个文件时,就可能产生冲突情况。

这个冲突产生后如何解决,我们可以采用手动Merge,解决冲突后,重新commit.

  1. HelloWorld.java 它是服务器上的文件与本地文件合并
  2. HelloWorld.java.mine 本地修改后的文件
  3. HelloWorld.java.r4 修改前的文件
  4. HelloWorld.java.r5 对方修改后的文件

  • 客户端-Eclipse SVN插件安装与使用(重要)

  • 下载与安装SVN插件

在我们资料中有一个svn插件,交它直接复制到eclipse安装目录下的dropins中

我们怎样可以知道svn插件安装成功

  • Eclipse SVN插件使用

  • 浏览仓库,将eclipse工程导入到svn服务器

  • 在svn资源库研究

  • 怎样将eclipse中的工程导入到svn仓库,可以在工程上右键

  • 完成后,它其实没有真正的导入,需要我们在进行提交才真正导入到svn仓库
  • Checkout 导出 导入

  • Add  commit  update 更新到历史版本

  • Eclipse的svn插件解决冲突

产生了冲突

我们在工程上执行更新操作,就可以查看到冲突的文件

解决冲突

  • 理论篇(了解)

  • 理论篇(了解)

在visualSVN中创建仓库时,可以选择svn目录结构

Trunk 主干目录,此目录下的文件为基准文件

Branches 用于开发的分支目录

Tags 用于发布的版本目录

假设有一个项目OA,我们完成了1.0版本,这时就可以打一个tags

后续我们在OA项目上添加一个新的模块(及时通讯),我们就可以开一个分支,又有一个公司需要在我们OA基础上添加财务管理模块,我们又可以打一个分支。

我们后续针对OA1.0版本在升级,我们不需要原来附加功能,就可以在原来的主干上继续开发,形成OA2.0版本,开发完成后就可以在打一个tags

  • 打一个分支或标记

分支的定义规则:

       Project name+日期时间+功能点

Tags的定义规则

       Project name+版本号

       版本号定义为三段数字编号

       xxx.xxx.xxx

       第一个:革命性的产品升级版

       第二个:新功能版

       第三个:修正bug

切换主干,分支与标记

Tags一般是只读,它代表的是发布的版本,所以我们不要进行改变。

  • Tags一般是只读,它代表的是发布的版本,所以我们不要进行改变。

如果要将主干内容合并到分支上,我们需要在分支的工作副本上操作。

如果要将分支的改变合并到主干上,我们需要在主干的工作副本上操作。

 

我们的需要是将分支的改变合并到主干上:

注意:在合并时要选择在相应的版本号,合并后,可能会出现冲突,将冲突解决,commit就可以。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Toroidals

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值