SVN的学习
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的学习的更多相关文章
- SVN的学习和安装
SVN分为服务器版本和客户端版本 服务器:VISUALSVN SERVER https://www.visualsvn.com/server/download/ 安装和配置(都很简单,只要不断的下一步 ...
- SVN的学习以及使用!
什么是版本控制? 版本控制是记录一个或若干文件内容变化的系统.以便将来查阅特定版本修订情况. 版本控制,就像是一本历史书,记录了软件版本的迭代过程. 为什么需要"版本控制" 需要清 ...
- Git 与 SVN 命令学习笔记
一:Git git config --global user.name "you name" #设置用户名git config --global user.email &quo ...
- Mac svn使用学习-3-客户端调用服务端简单例子
既然在前一篇内容中我们已经讲svn服务器搭建好了,那么接下来我们试着试着简单使用一个该服务器 1.从本地导入代码到服务器上 userdeMBP:~ user$ svn import /Users/us ...
- Mac svn使用学习-2-服务端
2.在mac环境下搭建一个SVN服务器环境 1)创建一个名为myCode的仓库——svnadmin命令 格式: svnadmin SUBCOMMAND REPOS_PATH [ARGS & O ...
- Mac svn使用学习-1-简介
在Windows环境中,可以使用TortoiseSVN来搭建svn环境.但是由于Mac自带了svn的服务器端和客户端功能,因此可以直接使用svn功能. svn即subversion,Subversio ...
- Mac svn使用学习-4-客户端cli命令详解
客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...
- SVN 使用学习记录
一.基本SVN操作 安装了SVN之后,在本机上点击右键,就能够看到如下信息: 1.建立SVN Repository 下面来建立一个SVN Repository.这个文件夹是同步用的,你可以放在本机的任 ...
- SVN学习——简单入门之创建仓库、导入、检出(一)
从刚刚参加工作就开始使用svn,清晰的记得那年师姐比较生气的来找我:“你怎么又不更新就提交代码了,把我写的都给覆盖掉了”,哈哈~ 虽然一直在用svn,不过在日常工作中主要用到的是简单的操作,而且大多数 ...
随机推荐
- 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 ...
- java异步计算Future的使用(转)
从jdk1.5开始我们可以利用Future来跟踪异步计算的结果.在此之前主线程要想获得工作线程(异步计算线程)的结果是比较麻烦的事情,需要我们进行特殊的程序结构设计,比较繁琐而且容易出错.有了Futu ...
- flowable 五个引擎和组成引擎的服务
一.flowable的五个引擎 flowable包含五个引擎,分别是: 1.内容引擎 ContentEngine 2.身份识别引擎 IdmEngine 3.表单引擎 FormEngine 4.决策引擎 ...
- Verilog乘法器
乘法器,不能用乘号直接表示,略坑呀 坑归坑,做还是要做的 思路:首先乘法分为有符号乘与无符号乘,所以建立两个module分别运算有符号与无符号.然后在总module中用case语句判断输出应赋的值. ...
- Unity是什么?
Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被 ...
- opengl去除控制台黑窗口
增加如下语句: #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\ ...
- C++面向对象的编程思想机器人
C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...
- 一个MySql Sql 优化技巧分享
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...
- 关于swagger文档的使用方法
引言 最近在后台开发的时候,使用swagger2进行前后台接口文档的声明.由此遇见的一些问题,写下来给自己复习. 参考: https://blog.csdn.net/xupeng874395012/a ...
- (IOCP)-C#高性能Socket服务器的实现
C#高性能Socket服务器的实现(IOCP) https://www.jianshu.com/p/c65c0eb59f22 引言 我一直在探寻一个高性能的Socket客户端代码.以前,我使用Sock ...