什么是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. VB读写进程的内存

    在窗体部分简单测试了ReadProcessMemory和WriteProcessMemory对另一个程序进程的读写. 由于临时项目变动,又不需要了,所以直接封类,删工程.以下代码没有一个函数经过测试, ...

  2. Ubuntu wpa 代替network-manager

    1. Ubuntu启动时,如果出现60秒等待:Waiting up to 60 seconds for network configuration 解决方法: a. /etc/init ,打开fail ...

  3. socketserver模块TCP和UDP协议形式

    # >>>>>>>>>>>>>>>>>>>>服务端socketserver模块通 ...

  4. php解析ini,conf文件

    /** * 解析conf文件,类似ini文件 * @param string $strFileName 文件名 * @param boolean $boolParseVal 解析值为数组,多 * @a ...

  5. [LeetCode] Minimum Cost to Merge Stones 混合石子的最小花费

    There are N piles of stones arranged in a row.  The i-th pile has stones[i] stones. A move consists ...

  6. codeforces_Codeforces Round #541 (Div. 2)_abc

    A. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. C++ struct结构体定义构造函数和析构函数,构造函数参数从VS2017平台转换到Qt5平台下构建出错,采用字符集转换函数将string类型转换为wstring,构建仍然出错!

    调试win硬件驱动,需要利用VS编译的win驱动构建自己的Qt5GUI程序: 其中部分win驱动源码如下 device_file::device_file(const std::string& ...

  8. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  9. pip和cmd常用命令

    1.pip常用命令 显示模块的详情  pip    show 安装模块   pip    install    模块名称 卸载模块    pip    uninstall    模块名称 查看当前环境 ...

  10. python Ajax

    Ajax一.准备知识JSON1.什么是json JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSO ...