svn版本控制-实用篇

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn版本控制-实用篇相关的知识,希望对你有一定的参考价值。

SVNSubversion的简称,是一个自由开源的版本控制系统。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具,后续我们会学到。

 

目录

1、SVN基本概念

2、服务器端-VisualSVN安装与配置

3、visualsvn的使用

4、客户端-TortoiseSVN安装与使用

 5、客户端-IDEA和eclipse的svn插件的安装与使用


1、SVN基本概念

用户之间并发修改和提交代码,怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?

复制-修改-合并方案(Subversion默认的模式)

在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

锁定-修改-解锁方案

在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。 此模式不适合软件开发这种工作。

Subversion支持LinuxWindows,更多是安装在Linux下。

svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

2、服务器端-VisualSVN安装与配置

SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle或者mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。还需要一个用户的操作端,用于提交更新检出代码,常用的有EclipseSvn插件,以及TortoiseSVN(小乌龟)。SubVersion 官网:Apache Subversion

官网安装包地址如下:Apache Subversion Binary Packages

 直接下载安装就可以,很方便。

3、visualsvn的使用

在开始运行中查找visualSVN Server Manager就可以打开图形化管理界面,可以在图形画管理界面创建工程目录,创建项目,以及权限分配等。

1)创建仓库,右键,如下即可创建。

 2)创建用户,右键users,并点击创建用户,输入用户名和密码即可。

用户创建完成可以输入url,并输入用户名和密码,然后去浏览器访问仓库。

3)设置访问权限,对仓库bos右键选择Properties,然后进入Security进行授权操作。

4)创建组,右键Groups创建组,输入组名即可。

5)再创建一个用户并为用户分配组,让多个用户在一个组。

 6)我们可以直接对组进行授权,这样组内的元素就都可以访问仓库了,如下:

4、客户端-TortoiseSVN安装与使用

 它是一个基于windows系统的svn图形化界面. 

官网安装包地址如下:Apache Subversion Binary Packages

下载安装比较方便,不再赘述。

1)在客户端访问服务器端仓库,在桌面右键选择TortoiseSVN,在选择repo-broswer,输入url即可

2)将服务器的项目检出checkout,桌面创建一个文件夹小王,文件夹内右键选择checkout,如下几栏分别为仓库url,本地位置,所有项目,以及本地版本。

 3)“小王”文件夹内创建文件hello.java,先add,这个代表的是它要添加到svn服务器。

 4)然后右键hello.java文件,选择svncommit,提交就可以,提交完成如下。

 文件会出现绿色的勾,如下:表示已经提交到服务器管理。

4)上面的checkout是客户端第一次从服务器下载项目到本地,commit是修改后提交项目到服务器,下面我们看一下update,它是后续将服务器上最新版本的源码下载到本地。

 5)如果发现更新错误,想更新会历史版本,我们可以通过查看日志选择更新的版本。选择版本并更新即可。也可以直接选择TortoiseSVN下的update to revision,选择更新的版本即可。

6)如果我想将文件删除,需要使用delete标记删除操作,本地文件会删除,我们需要在它的父目录进行提交,才能真正从服务器删除。

7)导入与导出,Import将本地资源导入到svn服务器。Export导出项目,和checkout的区别,它不存在.svn隐藏文件。

8)冲突问题与解决方法 

 多个用户同时操作同一个文件时,就可能产生冲突情况。这里面小刘和小王同时修改文件发生冲突,如下:

 解决方法:这个冲突产生后如何解决,我们可以采用手动Merge,解决冲突后,重新commit.

上述红色部分就是冲突的,修改冲突,重新提交就可以了。

 5、客户端-IDEA和eclipse的svn插件的安装与使用

 这个安装过程可以参考如下连接:idea安装svn插件_白马太黑的博客-CSDN博客

(1条消息) svn 安装目录 没有 svn.exe_悟世君子的博客-CSDN博客_svn没有svn.exe

我们主要看一下svn插件的使用方法,具体如下,下面只演示idea中的使用,和eclipse中使用方法大同小异。

由于安装上述链接的方式,在idea中配置了svn的插件,现在我们可以共享项目到版本控制的服务器了,具体如下:

这里需要点击➕,添加指定仓库的url,如下所示:

这样就建立了与服务器仓库的共享,颜色都变成绿色的了,如下:

commit操作,如下可以实现提交项目到svn服务器,具体如下:

 提交完成后可以在svn服务器上看到提交的项目代码:

 下面演示从svn服务器下载项目到本地,即checkout操作。

如下选择服务器仓库地址,点击加号添加服务器仓库地址,点击checkout即可。

 此时,会提示选择检出到本地的目录地址,根据个人情况,选择即可。

此时就将服务器的项目检出到本地了,系统会提示你是否用idea打开本地目录中的文件,你可以点击ok,也可以点击取消。

当然如果是项目刚开始,可以建立一个项目并导入svn服务器,这样大家都能从服务器检出项目和上传项目至服务器。如下:

 如果想断开与svn服务器的连接,只需要安装svn Disconnect插件,需要重启idea,在vcs中找到

svn Disconnection,然后断开连接即可。

 

以上是关于svn版本控制-实用篇的主要内容,如果未能解决你的问题,请参考以下文章

svn里面检出和导出区别是啥?

安装SVN并使用IDEA检出项目

一小时精通SVN版本控制 之三 客户端的操作

Linux学习闲谈 ——SVN版本控制拾遗

phpstorm使用svn提交, locked

SVN中检出 和 导出 的区别