文章目录
简介
版本控制系统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账号...