SVN就是这么简单

什么是SVN

SVN全称:Subversion,是一个开放源代码的版本控制系统

Svn是一种集中式文件版本管理系统。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。

集中式文件版本控制器:将所有的文件都交由服务器来进行统一的管理。既然是有服务器的,那么就需要联网进行操作了。

为什么要使用SVN

我们写一个项目一般都是一个团队来写,如果我们没有用SVN的话,那么我们只能在团队中互相拷贝对方的代码来完成我们的项目

SVN还有如下的好处:

  • 轻松比较不同版本间的细微差别【修改了代码,就有版本号,还能知道修改前后的数据】
  • 及时了解团队中其他成员的进度【如果没有把代码提交到服务器中,就是做得比较慢了】
  • 广域网共享【连上局域网就可以代码共享了】
  • 协同工作,大大提高团队工作效率

快速了解SVN

配置库

在SVN中有配置库这么一个概念,那它是什么东东呢??

它储存所有的数据,配置库按照文件树形式储存数据

  • 包括目录和文件

任意数量的客户端可以连接到配置库,读写这些文件.并且可以添加读写日志,有权限的用户很方便的看到这些修改

工作副本

我们从上面已经知道了,我们可以从配置库中得到想要的文件。那么我们要把文件从配置库下载下来。这个下载下来的区域就是工作副本

这个工作副本其实就是我们工作的区域,我们对那些文件修改完,就能够再次提交到配置库中了

SVN命令

我们简单来学习几条SVN的命令,SVN有图形界面的功能,因此命令学习也不是必须的。了解一下....

---创建服务器端版本库svnadmin create 版本库路径 ---启动SVN服务器端svnserve -d -r 版本库路径 ---在系统服务中注册svn服务器sc create svn binPath= "C:\Program Files\TortoiseSVN\bin\svnserve.exe --service -r D:\itcast\svnserver\20150118svn" DisplayName= "svn服务"---删除系统服务中的 服务sc delete 服务ID复制代码

如果启动SVN服务器的时候,不会报错就是正常开启了


分配权限

在我们配置库中找到conf文件夹下的svnserve.conf配置文件。将下面的三行的注释去掉

分配用户

找到conf文件下的passwd,配置用户

常见的子命令

  • import:将未纳入版本控制器的文件或目录提交到版本库中(仅执行一次)
  • checkout: 从版本库标签中出工作副本
  • revert: 将工作副本文件恢复到指定版本
  • update: 将版本库的修改合并到工作副本中
  • commit:把工作副本的修改提交到版本库。

使用SVN

添加数据到SVN

创建配置库,我们可以使用命令行方式,也可以使用UI点击的方式。这里我就直接使用UI的方式了。

随后,开启我们的SVN服务

把一个文件夹放置到配置库中,交由SVN管理

在SVN中查看我们添加的内容:

查看具体的日志

标识得非常清晰:


从SVN导出数据

把SVN的数据导出到用户中。

导出后:这个local文件夹其实就是我们的工作副本!


修改SVN导出后的数据、再添加回SVN

我在工作副本中添加了一个文件

添加到SVN中:

随后,变成了一个蓝色的图标+号,我们提交。


解决冲突

我们可能会出现这样的一个问题:我们的SVN是一个团队正在开发。但是在commit之前,有人就把我正在编辑的文件给修改了。于是当我在提交的时候就出现了冲突【当前的数据不一致,冲突了】

localhost2用户导出了SVN的数据,并且修改了文件:

另一个用户localhost也在修改该文件,但是它没有做updata操作。并不知道该文件已经被修改了。

当他修改完,想要更新到SVN中的时候,发现冲突了。

面对冲突,我们有两种方案:

  • 放弃本次的修改
  • 查看冲突的内容是什么,当查看完再决定要哪个的数据,或者是合并起来。

我们进去冲突修改的页面,决定要的是哪一行的数据

最后修改完,点击保存操作就行了。


关于冲突的建议

  • 修改文件之前,先进行一次update操作
  • 修改完成后,及时commit,不要在本地停留过长时间
  • 在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分
  • 出现冲突很正常,可以通过前面的方法解决,不要相互覆盖

工作流程图


如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud必会知识点大全

为什么要学习Spring Cloud 在项目开发中随着业务越来越多,导致功能之间耦合性高、开发效率低、系统运行缓慢难以维护、不稳定。微服务 架构可以解决这些问题,而Spring Cloud是微服务架构最流行的实现. 1.微服务 微服务架构是使用一套小服务来开发单个应用…

thinkphp3.22 多项目配置

1.index.php if(version_compare(PHP_VERSION,5.3.0,<)) die(require PHP > 5.3.0 !); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define(APP_DEBUG,true); // 创建 //define(BIND_MODULE,Login); define(erp,true); // 定义应用目录 define(APP_PAT…

30分钟掌握 C#7

1. out 变量&#xff08;out variables&#xff09; 以前我们使用out变量必须在使用前进行声明&#xff0c;C# 7.0 给我们提供了一种更简洁的语法 “使用时进行内联声明” 。如下所示&#xff1a; 1 var input ReadLine(); 2 if (int.TryParse(input, out var result)) 3 …

在 C# 中如何检查参数是否为 null

前言前不久&#xff0c;微软宣布从 C# 11 中移除参数空值检查功能&#xff0c;该功能允许在方法开始执行之前&#xff0c;在参数名称的末尾提供参数空值检查&#xff08;!!操作符&#xff09;。那么&#xff0c;在 C# 中如何检查参数是否为 null 呢&#xff1f;1. null这个可能…

什么是Maven快照(SNAPSHOT)

本文来说下Maven的SNAPSHOT版本有什么作用 文章目录 问题解决 正式版本"abc-1.0"快照版本"abc-1.0-SNAPSHOT"本文小结问题 在使用maven进行依赖管理时&#xff0c;有的版本号后面会带有"-SNAPSHOT"&#xff0c;有什么作用呢&#xff1f; <dep…

带你剖析WebGis的世界奥秘----Geojson数据加载(高级)

前言&#xff1a;前两周我带你们分析了WebGis中关键步骤瓦片加载点击事件&#xff08;具体的看前两篇文章&#xff09;&#xff0c;下面呢&#xff0c;我带大家来看看Geojson的加载及其点击事件 Geojson数据解析 GeoJSON是一种对各种地理数据结构进行编码的格式。GeoJSON对象可…

如果要存ip地址,用什么数据类型比较好

在看高性能MySQL第3版&#xff08;4.1.7节&#xff09;时&#xff0c;作者建议当存储IPv4地址时&#xff0c;应该使用32位的无符号整数&#xff08;UNSIGNED INT&#xff09;来存储IP地址&#xff0c;而不是使用字符串。但是没有给出具体原因。为了搞清楚这个原因&#xff0c;查…

微软 .NET Core 3.1 年底将结束支持,请升级到.NET 6

微软近日宣布&#xff0c;将于 2022 年 12 月 13 日停止为 .NET Core 3.1 提供服务更新、安全修复和技术支持。.NET Core 是一个免费开源的、用于 Windows、Linux 和 macOS 操作系统的软件框架。该项目主要由微软员工通过 .NET 基金会开发&#xff0c;并在 MIT 许可下发布。202…

软件团队的模式选择

软件团队的模式分为&#xff1a;主治医生模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式和官僚模式。 经过小组的讨论&#xff0c;我们决定选用交响乐团模式获得功能团队模式。 交响乐团模式的优点是种类多&#xff0c;…

Angular 2

1. Angular2 官网 https://angular.io/guide/quickstart Node.js 下载 https://nodejs.org/en/ 怎么在vs code中使用angualr2 https://code.visualstudio.com/docs/nodejs/angular-tutorial moment.js:(javacript日期处理库) http://momentjs.cn/ 2. ng2-hightCharts https://…

「Docker入门指北」容器很难理解?带你从头到尾捋一遍

文章目录 1. 初始虚拟化 &#x1f351; 虚拟化概念&#x1f351; 硬件虚拟化2. Docker容器 &#x1f351; Docker技术的诞生&#x1f351; 容器与虚拟化&#x1f351; 性能差别&#x1f351; Docker优势 编排有序高效易迁移快速部署3. 容器生态系统 &#x1f351; 核心技术 容器…

微服务:事务管理

几乎所有的信息管理系统都会涉及到事务&#xff0c;事务的目的是为了保证数据的一致性&#xff0c;这里说的一致性是数据库状态的一致性。说到数据库状态的一致性&#xff0c;相信大家都会想到 ACID &#xff1a;原子性&#xff08;Atomic&#xff09;&#xff1a;在一个事件的…

js - flex布局测试案例:完美居中

<span>I love flex layout!</span><style>body{display:flex;justify-content:center;align-items:center;font-size:3em;color:#00ffff;}</style>![enter image description here][1]<p>与自己为敌&#xff0c;</p><p>与自己为友&a…

操作数据库(对战小游戏)

创建数据库 1 create database duizhan2 go3 use duizhan4 go5 create table duizhan6 (7 Code varchar(20) not null primary key,8 Name varchar(20) not null,9 Sex varchar(20) not null, 10 Blood int, 11 Attack int, 12 Defence int, 13 Mingzhong…

8-Python3从入门到实战—基础之数据类型(集合-Sets)

Python从入门到实战系列——目录 集合的定义 集合&#xff08;set&#xff09;和字典类似&#xff0c;也是一组key的集合&#xff0c;但不存储value&#xff1b;由于key不能重复&#xff0c;所以&#xff0c;在set中&#xff0c;没有重复的key。创建一个set&#xff0c;需要提供…

Redis的那些事:一文入门Redis的基础操作

Redis是什么Redis&#xff0c;全称是Remote Dictionary Service,翻译过来就是&#xff0c;远程字典服务。redis属于nosql非关系型数据库。Nosql常见的数据关系&#xff0c;基本上是以key-value键值对形式存在的。Key-value: 就像翻阅中文字典或者单词字典&#xff0c;通过指定的…

10种提问型爆文标题句式 直接套用

如果你用1天的时间来写篇好文章&#xff0c;那你花掉半天时间想一个好标题都不过分&#xff01; 你是不是觉得我有点言过其实了&#xff1f;没关系&#xff0c;先来问你2个问题&#xff1a; 1、花了很长时间&#xff0c;写了一篇很牛的卖货推文&#xff0c;定稿后&#xff0c…

同域和不同域长啥样

相同域http://www.jiangdou.com/http://www.jiangdou.com/maidou 不同域http://www.jiangdou.comhttp://bbs.jiangdou.comhttps://www.jiangdou.comhttp://www.jiangdou.com:8080转载于:https://www.cnblogs.com/MaiJiangDou/p/6689133.html

2016 China Joy抢先看,文末有彩蛋!

这里只有你想不到的&#xff0c;没有你看不到的。 2016 China Joy开幕在即&#xff0c;天气成了最折磨各种媒体、展商和观众的小妖精&#xff0c;一会艳阳天&#xff0c;一会大暴雨&#xff0c;轩轩现在是这样的&#xff01; 七月底的魔都&#xff0c;热的那叫一个销魂&#x…

JdbcTemplate+PageImpl实现多表分页查询

一、基础实体  MappedSuperclass public abstract class AbsIdEntity implements Serializable {private static final long serialVersionUID 7988377299341530426L;public final static int IS_DELETE_YES 1;// 标记删除public final static int IS_DELETE_NO 0;// 未删除…