什么是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,不要在本地停留过长时间
  • 在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分
  • 出现冲突很正常,可以通过前面的方法解决,不要相互覆盖

工作流程图

SVN使用【介绍SVN、快速入门、解决冲突】的更多相关文章

  1. Mybatis第一篇【介绍、快速入门、工作流程】

    什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  2. uni-app跨平台框架介绍和快速入门

    前言: 首先今天主要介绍的是一个多平台的前端框架uni-app,关于多平台的前端框架网上有很多成熟的解决方案比如说Taro,React Native,Flutter等这些都是一些非常优秀的前端跨平台的 ...

  3. Shiro 简单介绍和快速入门。

    一.shiro是啥? /* * Shiro ? 安全框架是一个 1.功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理,并可用于保护任何应用程序 - 从命令行应用程序,移动应用 ...

  4. linux下svn解决冲突

    1. 使用svn status + 文件路径+文件名 查看文件或目录的状态(该状态可自行进行百度),属性状态为'C'的表示,改文件或目录处于冲突状态 2. 使用svn resolve --accept ...

  5. AngularJS快速入门指南01:导言

    AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...

  6. git快速入门 push/clone/reset/merge/切换分支全都有

    本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...

  7. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  8. SVN系列学习(一)-SVN的安装与配置

    1.SVN的介绍 SVN是Subversion的简称,是一个开发源代码的版本控制系统,采用了分支管理系统. 文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可 ...

  9. 【Activiti工作流引擎】官方快速入门demo

    Activiti官方快速入门demo 地址: https://www.activiti.org/quick-start 0. 版本 activiti 5.22.0 JDK 1.8 1. 介绍 这个快速 ...

随机推荐

  1. noip普及组2004 火星人

    火星人 描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类 ...

  2. shell学习笔记(一)

    1.第一行必须以#!/bin/bash #!表示脚本使用后面的解释器解释执行 2.echo 打印输出 例如   echo "hello world" > aa.txt 3.接 ...

  3. asp.net core MVC 过滤器之ActionFilter过滤器(二)

    本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core ...

  4. js运算

    今天把五个题目都做出来了,虽然可能用的方法比较麻烦.不过总体来说不错: <!DOCTYPE html><html> <head> <meta charset= ...

  5. Random问题

    Unity添加C#脚本,打不出来Random.Next,原因是Random自动引用了UnityEngine命名空间,在使用Random的时候要要这么写:System.Random ran=new Ra ...

  6. 【Ubuntu 16】安装eclipse

    1.将eclipse.tar.gz传送到/home/xxx/下,解压缩,这里我已经配置好了JDK1.7,所以eclipse配置了就可以使用 2.创建快捷方式 dream361@master:~$ to ...

  7. Web开发中常用的状态码

    在HtttpServletResponse类中有关于状态码的描述. static int SC_ACCEPTED Status code (202) indicating that a request ...

  8. C语言:min和max头文件

    转自:http://www.cppblog.com/jince/archive/2010/09/14/126600.html min和max头文件 虽然说求最大值最小值函数在哪个头文件下并不是非常重要 ...

  9. AOP入门之静态代理

    代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式一般涉及 ...

  10. grep Pocket Reference读记

    1 简介 grep的基本命令格式如下:           grep [options] [regexp] [filename]   如果regexp中含有空格,应该使用单引号或双引号括起来.单引号和 ...