SVN搭建服务器和客户端使用详解

前言(必读哦):

本文分为五部分:
一:SVN简介;
二:SVN搭建服务器;
三:SVN客户端使用及详解;
四:版本冲突问题解决方案;
**Attention(注意)!!!**并不需要每个人都创建SVN服务器,一个团队或者说现在我们这一个班级有一个SVN服务器(http://192.168.13.24/svn/1908b)该url,url,url 重要的事情说三遍,可以在浏览器直接打开,当安装了客户端后要用到这个url 。是1908b的版本管理服务器,服务器的版本库在我的本机电脑上,所以除学习相关的不可以上传哦!使用搭建服务器的教程部分仅供大家以后参考使用,我们班的服务器已经搭好了,所以现在跳过第二部分,学习其余部分即可。

一:SVN简介

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
SVN的全称是Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。
SVN采用客户端/服务器体系,项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后在此基础上,每个开发人员可以在自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。
SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要版本库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

二:SVN搭建服务器

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。并不需要每个人都创建SVN服务器,一个团队或者说现在我们这一个班级有一个SVN服务器即可。
VisualSVN-Server.msi(svn服务端)
下载地址:http://subversion.apache.org/packages.html
Svn文件夹里有,版本是4.2.2。
搭建流程:https://www.cnblogs.com/yankyblogs/p/7282752.html

三:SVN客户端使用及详解

3.1 SVN客户端安装(超简单)

Url :http://192.168.13.24/svn/1908b

安装TortoiseSVN 1.14, 不用安装visualSVN-Server

右键有这两个选项,小黑框cmd svn --version 显示如下图即安装成功。

此时安装及汉化成功,下面是重点了!!!

3.2 SVN客户端使用(重点掌握部分)
安装svn很简单,用起来就很懵了,那么下面就介绍一下svn常用功能
导入(import),导出(export),提交(commit),检出(checkout),更新(update)
3.2.1导入(import) 和 提交的区别
导入:将一个新的项目(和svn没有版本关系)导入到服务器版本库中,当再次检出(checkout)时就会产生版本。
提交:将一个和svn有版本关系的项目提交到服务器版本库中。

例如我要上传shop_admin_new这项目 我导入的url就是这样填写的:
Url(这个url在上边提过,还记得吗?)+shop_admin(指定文件夹,比如说我们全班做一个shop_admin项目,那我们上传的项目就在上传在这个目录下。同理,我们全班做一个movie_admin项目,那我们上传的项目就在上传在movie_admin目录下。)+shop_admin_ljy(项目名).

3.2.2导出(import) 和检出的区别
导出:将svn版本库项目导出到本机指定目录下,导出后不再拥有版本关系。
检出:检出的项目仍然被SVN进行管理,和版本库仍然关联。
怎么导出:在自己想要导出的本机目录下右键
3.2.3提交(commit)
是将本地做过的改动,同步上传到SVN服务器,改动包括修改、新增、删除、改名、移动等。

3.2.4检出(checkout)
是把服务器上最新的版本下载到本地,检出的项目仍然被SVN进行管理,和版本库仍然关联。步骤和导出类似,注意文件夹层级关系即可。

3.2.5更新(update)
是把服务器上最新的版本下载到本地,前提是开发者本地有这个文件。即是检出的文件而不是导出的文件。

四:SVN版本冲突问题解决方案

4.1.为什么会出现冲突
<1>两个开发人员,Harry和Sally,分别从服务器端下载了文件A。

<2>Harry修改之后,A变成了A’,Sally修改之后,A变成了A”。

<3>Harry先一步提交,使服务器端文件的版本也变成了A’

<4>Sally本地的文件A”已经过时了,此时她已无法提交文件,服务器会要求她先进行一次更新操作。

<5>此时Sally的更新操作有两种可能
(1)Sally所做的修改与Harry恰好是同一个位置,更新操作尝试合并文件失败,发生冲突。对应4.2修改相同位置产生的版本冲突。
(2)Sally所做的修改与Harry不是同一个位置,更新操作尝试合并文件成功。对应4.3修改不同位置产生的版本冲突。

4.2修改相同位置产生的版本冲突
(案例解释:a,b同时检出文件productController.java,那么a,b拥有相同版本号,假设为版本1,a修改文件第10行并提交,此时版本库的productController.java版本为2,但请注意:b手里的productController.java如果没有更新,其版本仍为1,这时b如果修改同样的第10行并提交,就会版本冲突)

多出来3个文件,

右键自己的文件

当面对以上3个窗口时,还是容易让人发蒙,尤其是文件比较复杂,冲突一大片,各种颜色掺杂在一起,不知如何下手,害怕把其他文件意外破坏和文件合并错误。那么怎么办呢?我们不妨先从简单的文件冲突入手,彻底理解各种颜色的含义,冲突行是如何标记的,这样我们才敢大胆地使用这个界面进行代码合并操作,不用担心合并后,把别的文件无辜干扰了或者出现合并错误的问题。

仔细观察以上3个窗口,我们发现,23行和24行之间多出来一行,即橙色行,并且Theirs 和Mine 都含有这一行,这个是未冲突前,此行的内容,即刚开始的版本。第24行是爆红行、冲突行,相应字段还是黄色警示,并且在第3个窗口(下方窗口)第24行全是?????这种符号,意味着无法合并他俩对此行的同时修改,需要我们判断,要么采取Theirs 的,要么采取Mine 的,要么采取上一版本,要么重新商量一个相同的。SVN也提供了几个方便的右键按钮,提示如何做出这些选择,左上是别人修改文件内容,右上是自己修改的内容,下面是合并的内容,可以自由右键选取使用哪一个。
标记为解决即可处理冲突

4.2修改不同位置产生的版本冲突(容易解决)
(案例解释:a,b同时检出文件productController.java,那么a,b拥有相同版本号,假设为版本1,a修改文件第10行并提交,此时版本库的productController.java版本为2,但请注意:b手里的productController.java如果没有更新,其版本仍为1,这时b如果修改不同行(不是第10行)并提交,就会版本冲突)

点击更新,然后一路确定即可。此时a,b修改的内容都会在新的版本中体现。

4.3一些建议
当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。

在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘。

养成良好的使用习惯,使用SVN时每次都是先更新,后提交。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章