SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS

为什么需要SVN

通常软件开发由多人协作开发,如果对代码文件、配置文件、文档等没有进行版本控制,将会出现很多问题:

  • 备份多个版本,占用磁盘空间大
  • 解决代码冲突困难
  • 容易引发BUG
  • 难于追溯问题代码的修改人和修改时间
  • 难于恢复至以前正确版本
  • 无法进行权限控制
  • 项目版本发布困难

所以我们需要使用版本控制工具,SVN的作用正是在于多人协作,版本回退等等问题上。SVN的使用较为简单,而且可以跨平台使用,属于C/S结构的软件,需要客户端和服务器端,一般来说应该是一台服务器或电脑作为服务器端,我们在服务器端中建立仓库,但是为了学习方便我们在本机即模仿客户端又模仿服务器端。

客户端下载地址:https://tortoisesvn.net/downloads.html

服务器端下载地址:https://www.visualsvn.com/downloads/

服务器端安装

基本上和安装一般软件一样,一路next即可,但是需要注意以下几点:

这个端口号默认使用443,也可以使用8443这个备用端口号

如果两个端口都有冲突,我们可以找到端口是哪个程序,把程序进程停止

在CMD中使用命令:

找到占用端口的程序的PID : 

我们在任务管理器,找到pid值,停止掉就行了

我们的Tomcat也可以使用该方法解决8080占用的问题

如何知道服务器端安装好了?

如果安装好了,我们可以在系统 —> 服务中可以找到SVN  或者是在CMD中使用命令:

svnadmin --version

就会显示svn服务器的版本

客户端的安装

客户端的安装没什么值得说明的,一路next,需要说明的是该客户端有中文语言包哦,就在其下载页就可以找到。语言包的安装也是一路next,它会自动找到客户端的安装位置,不需要我们来指点,很简单,然后我们在客户单中setting选择中文即可:

如何知道客户端安装好了?

只要鼠标右键出现:

使用命令操作SVN

1. 首先我们需要建立仓库,在CMD中使用命令:

svnadmin create 仓库位置

如: svnadmin create D:\webApp

2. 还需要将SVN服务器关联到这个仓库,命令:

svnserve -d -r 仓库地址

-d 表示svn服务在后台运行, -r指明仓库地址,注意这是黑窗口的光标会移到下一行并不停的闪烁,就表示成功的开启SVN服务,我们不要关闭这个黑窗口哦

注意:命令是svnserve

接下来我们就可以开始同步仓库中的东西了,现在相当于同步空仓库中的东西,在另一个文件夹中,在使用同步工作吧

同步仓库

1. 默认SVN是不允许匿名用户访问仓库的,所以我们需要将这个仓库的conf/svnserve.conf 文件的第19行修改为write,一点要是19行

2. 第一次同步需要先检出(checkout)

在文件夹中右键检出,会出现需要我们输入仓库地址的地方:

因为我们之前已经将仓库与SVN客户端关联,所以我们要使用: svn://localhost 这个地址即可,如果不再同一台机器上,把localhost改为ip地址

检出成功之后,可以在这个文件夹中看到一个隐藏的.svn文件夹

因为是一个空仓库,所以没有什么文件存在,我们可以新建一个文件,右键SVN提交

提交的时候,需要我们填写一些提交信息和选中要提交的文件,其实提交信息写不写都可以,但是强烈推荐写上提交信息,因为正是这些信息帮助我们选择回退的版本。

3. 其他同步该仓库的用户就需要SVN更新,更新之后就可以得到这个新建的文件

注:SVN提交(commit) SVN更新(update)都是在文件夹的空白位置鼠标右键可以看到的

SVN中的图标

我们在使用SVN管理代码的时候,文件会出现一些图标,来认识一下常见的图标吧

需要说明的是,但当发生代码冲突的时候,叹号图标并不会立即出现,存在延迟,所以我们还是以错误信息为准吧

忽略某个文件或是某类文件

我们在需要忽略的文件上右键,可以选择忽略,或者或略该文件类型的文件,或者对于文件夹可以递归的忽略

回退版本

回退版本的依据就是我们之前提交的提交信息,根据这些日志信息,我们可以准确的知道需要回退到哪个版本,所以还是建议每次提交都写上提交信息

使用图形界面创建仓库和用户

终于要使用图形界面了,我们安装的SVN服务器端支持图形界面的:

创建仓库和用户都是很简单的,重点在于为用户分配权限:

可以给不同用户分配读写权限

我们还可以在浏览器中浏览我们仓库信息

在Eclipse中配置SVN插件

在Eclipse的安装目录中dropins下新建一个SVN文件夹,在里面放入SVN插件的文件,重启Eclipse即可

检验是否安装成功

出现SVN的视图就表示安装成功了

发布项目到svn(add到svn)

第一步 右键点击项目 team—share project

第二步 选择使用版本控制工具

第三步 创建仓库位置

输入仓库路径

第四步 点击finish进行把项目add到svn上

(1)输入用户名和密码,可以把勾上,以后就不用每次都输入了

(2)在项目上有图标变化,右键点击项目,点击team-提交

点击ok

图标变成圆柱的图标,表示发布完成

从svn服务器下载项目(checkout)

第一步 打开svn资源库,没打开的话,就在view中找到打开

(1)添加svn资源库

(2)输入仓库路径

第二步 右键点击要下载项目,点击 检出为

点击finish完成

处理版本冲突

冲突的表现为我们后修改的代码提交不上:

版本冲突的问题难以避免,我们可以在选择统一的时间来提交,专门的人员来处理代码冲突。

但是我们遇见了应该怎么办呢?

1. 先备份我们写的代码

2. 同步更新代码,也就是SVNupdate操作

3.  将多余的.mine .r6 .r7(这两的文件不一定是这两个文件后缀) 删除,留下代码冲突文件再修改,之后再提交即可

SVN的学习的更多相关文章

  1. SVN的学习和安装

    SVN分为服务器版本和客户端版本 服务器:VISUALSVN SERVER https://www.visualsvn.com/server/download/ 安装和配置(都很简单,只要不断的下一步 ...

  2. SVN的学习以及使用!

    什么是版本控制? 版本控制是记录一个或若干文件内容变化的系统.以便将来查阅特定版本修订情况. 版本控制,就像是一本历史书,记录了软件版本的迭代过程. 为什么需要"版本控制" 需要清 ...

  3. Git 与 SVN 命令学习笔记

    一:Git git config --global user.name "you name"   #设置用户名git config --global user.email &quo ...

  4. Mac svn使用学习-3-客户端调用服务端简单例子

    既然在前一篇内容中我们已经讲svn服务器搭建好了,那么接下来我们试着试着简单使用一个该服务器 1.从本地导入代码到服务器上 userdeMBP:~ user$ svn import /Users/us ...

  5. Mac svn使用学习-2-服务端

    2.在mac环境下搭建一个SVN服务器环境 1)创建一个名为myCode的仓库——svnadmin命令 格式: svnadmin SUBCOMMAND REPOS_PATH [ARGS & O ...

  6. Mac svn使用学习-1-简介

    在Windows环境中,可以使用TortoiseSVN来搭建svn环境.但是由于Mac自带了svn的服务器端和客户端功能,因此可以直接使用svn功能. svn即subversion,Subversio ...

  7. Mac svn使用学习-4-客户端cli命令详解

    客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...

  8. SVN 使用学习记录

    一.基本SVN操作 安装了SVN之后,在本机上点击右键,就能够看到如下信息: 1.建立SVN Repository 下面来建立一个SVN Repository.这个文件夹是同步用的,你可以放在本机的任 ...

  9. SVN学习——简单入门之创建仓库、导入、检出(一)

    从刚刚参加工作就开始使用svn,清晰的记得那年师姐比较生气的来找我:“你怎么又不更新就提交代码了,把我写的都给覆盖掉了”,哈哈~ 虽然一直在用svn,不过在日常工作中主要用到的是简单的操作,而且大多数 ...

随机推荐

  1. L147 Low Cost Study Has High Impact Results For Premature Babies

    No one knows exactly why some babies are born prematurely(早产), but some of the smallest premature ba ...

  2. java异步计算Future的使用(转)

    从jdk1.5开始我们可以利用Future来跟踪异步计算的结果.在此之前主线程要想获得工作线程(异步计算线程)的结果是比较麻烦的事情,需要我们进行特殊的程序结构设计,比较繁琐而且容易出错.有了Futu ...

  3. flowable 五个引擎和组成引擎的服务

    一.flowable的五个引擎 flowable包含五个引擎,分别是: 1.内容引擎 ContentEngine 2.身份识别引擎 IdmEngine 3.表单引擎 FormEngine 4.决策引擎 ...

  4. Verilog乘法器

    乘法器,不能用乘号直接表示,略坑呀 坑归坑,做还是要做的 思路:首先乘法分为有符号乘与无符号乘,所以建立两个module分别运算有符号与无符号.然后在总module中用case语句判断输出应赋的值. ...

  5. Unity是什么?

    Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被 ...

  6. opengl去除控制台黑窗口

    增加如下语句: #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\ ...

  7. C++面向对象的编程思想机器人

    C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...

  8. 一个MySql Sql 优化技巧分享

    有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...

  9. 关于swagger文档的使用方法

    引言 最近在后台开发的时候,使用swagger2进行前后台接口文档的声明.由此遇见的一些问题,写下来给自己复习. 参考: https://blog.csdn.net/xupeng874395012/a ...

  10. (IOCP)-C#高性能Socket服务器的实现

    C#高性能Socket服务器的实现(IOCP) https://www.jianshu.com/p/c65c0eb59f22 引言 我一直在探寻一个高性能的Socket客户端代码.以前,我使用Sock ...