什么是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

SVN就是这么简单的更多相关文章

  1. SVN部署与简单使用

    原文发表于cu:2016-05-24 参考文档: http://www.tuicool.com/articles/Yv2iyu7 http://www.centoscn.com/CentosServe ...

  2. 【Tool】---SVN的超级简单并具体得使用介绍

    又一次被打脸,笔者表示再也不相信自己的记性了.简单的SVN隔了一段时间后,由于项目的需要要重新简历代码库,竟然一下子又忘了.天那,这就好比战士上了战场发现没带枪,这能行吗?因此,趁着今天又简短的复习了 ...

  3. SVN+码云 简单使用流程

    1.登录码云网站...

  4. SVN 使用的简单整理

    1. 在SVN服务器上创建存储Dir,并和个人主机建立联系.      现在SVN服务器上创建一个存储文件夹svn_storeDir.然后在个人电脑上建立一个本地文件夹local_Dir.    进入 ...

  5. SVN的详细简单操作

    SVN服务器搭建和使用(一)  http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(二) ht ...

  6. SVN四部曲之SVN简单使用教程入门

    1.        签出源代码到本机 在本机创建文件夹StartKit,右键点击Checkout,弹出如下图的窗体: 2.        2 在上图中URL of Repository:下的文本框中输 ...

  7. [No000092]SVN学习笔记3-Import/Checkout(迁入/迁出),GetLock(加锁)

    一.TortoiseSVN Client 获取服务器端的文件到新的本地文件夹 1.在本地新文件夹上右键菜单: 2.打开Repo-browser(可能需要输入你的用户名&密码) 3.输入服务器端 ...

  8. Android Studio关于SVN的相关配置及从SVN检出项目

    一.安装配置: 如图,安装时必须自定义选择 command line 否则不会安装的 安装完成后,打开 IDE 的 setting 配置面板: 如上图路径 Version Control 下的 Sub ...

  9. CentOS 创建SVN 服务器,并且自动同步到WEB 目录

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...

随机推荐

  1. Spring-Docker简易指南

     使用代码:https://files.cnblogs.com/files/miracle9527/demo4springboot.rar # 约定#为注释行.$为命令行 # 开始操作前将demo4s ...

  2. [R]R包版本更迭【持续更新】

    由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...

  3. 土制Excel导入导出及相关问题探讨

    转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...

  4. 2018-2019-2 网络对抗技术 20162329 Exp4 恶意代码分析

    目录 Exp4 恶意代码分析 一.基础问题 问题1: 问题2: 二.系统监控 1. 系统命令监控 2. 使用Windows系统工具集sysmon监控系统状态 三.恶意软件分析 1. virustota ...

  5. Java学习之软件安装

    成功安装了jdk-10.0.1.eclipse-committers-2018-09-win32-x86_64.mysql-5.7.18.1和tomcat-9.0.0.M17

  6. 20175324 2018-2019-2 《Java程序设计》第8周学习总结

    本周学习<Java程序设计>第十五章: 泛型: 泛型(Generics)的主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构. 泛型类声明:class 名称<泛型列 ...

  7. TCPDF 背景图片透明度

    1.TCPDF 背景图片透明度  参考:https://bbs.csdn.net/topics/392364981 效果: 2.画一条线: 2.1方法解说  /*画一条线: x1:线条起点x坐标 y1 ...

  8. 《JavaScript DOM编程艺术》学习笔记(一)

    这本书是我听说学习前端基础入门书籍,于是就开始看了,大概是从5月10号开始看的吧,一直看到现在,差不多要看完了,书是挺厚的...286页,不过比起JAVASCRIPT权威指南来说还是差多了,权威指南才 ...

  9. LeetCode编程训练 - 拓扑排序(Topological Sort)

    拓扑排序基础 拓扑排序用于解决有向无环图(DAG,Directed Acyclic Graph)按依赖关系排线性序列问题,直白地说解决这样的问题:有一组数据,其中一些数据依赖其他,问能否按依赖关系排序 ...

  10. [Swift]LeetCode153. 寻找旋转排序数组中的最小值 | Find Minimum in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...