您的位置:首页 > 其它

SVN使用说明

2017-08-03 17:32 127 查看
SVN简介

名称:SVN(Subversion的简称,开源的版本控制系统)

厂商:开源项目(CollabNet发起并提供启动资金,目前Wandisco是贡献最多的全职Subversion开发者并担任release manager.)

功能:支持创建分支、标志,支持回滚、事务等。

优点:安装操作都比较简单,支持跨平台,跨地区管理代码;有较快的速度;支持文件重命名;支持不锁定开发;管理方便,符合大众思维习惯;易于上手,代理一致性较高。

缺点:适合中小型项目,人数在几十人为佳;不适合人数较多的项目,比如开源项目;服务器开销较大,数据库容易暴增;不能离线工作,没连接服务器,不能进行对比,还原,提交等工作。

升级:开源项目,管理比也比较规范,升级很及时,不断有新版本出来,本文编写时就有新版本1.9.3.27038更新了(2天前更新,可见很及时)。

推荐:★★★★ (中、小型项目适用)

3.SVN的安装和使用

首先SVN和其他版本控制工具一样,有Server端和Client端,下面分别介绍安装和使用。

3.1 安装包下载

安装包,我们可以从官方网站下载,官网提供了Linux和Windows各种版本,可以使用,我们主要介绍Windows下的安装使用 

下载URL:http://subversion.apache.org/packages.html 

拉到最底下



 如上图,有两个我们需要的安装包,先点击第一个"TortoiseSVN" 这是一个客户端工具,主要用于和WINDOWS资源管理器绑定,进行文件管理

点击进入“小乌龟”下载网站如下:



分别提供了32位和64位两种版本,根据我们操作系统下载对应的。下面是各种语言包。我们下载简体中文

然后,我们点击图1的第二个地址,进入服务端和VS插件下载网站,如下图:



我们下载“VisualSVN for Visual Studio” 这个主要用于VS开发源代码版本控制。

再下载“VisualSVN Server”这个就是服务器上需要安装的管理工具。

一共有四个安装包,下载后如下:

 


我是64位操作 系统,下载的全是64位,可根据自己的操作系统下载32位或64位

3.2 SVN服务端安装

双击下载的“VisualSVN-Server-3.5.0-x64.msi”进入SVN服务器安装

 


下一步



 选择同意声明,点下一步



按默认,安装服务器及管理员工具 和 命令行工具,点下一步



这里我们选择标准版即可,企业版需要每台服务器支付950美元,标准版免费,并且其功能基本可以满足我们的使用需要。点下一步



这里 Location 为安装路径,Repositorys为数据库存放地址,下面是端口号和是否使用安全连接,按默认即可,点下一步,



配置完成,点Install安装



安装完成,选择启动SVN服务器。

3.3 SVN服务端使用

3.3.1创建版本库

打开刚才安装好的SVN服务器端,“VisualSVN Server Manager”如下



 

服务端主界面 右边为一些状态信息,左边是我们创建的版本库,用户及组。



在版本库上右击,打开菜单,分别为 创建版本库,导入已存在的版本库,浏览。

我们点击“Create New Repository..”创建一个新的版本库,打开窗口如下:



这里是选择版本库类型,我们按默认,点下一步



这里输入一个版本库名称,点下一步。



这里我们按默认,选择 创建一个空的版本库,点下一步,



这里是给新创建的版本库,设置认证方式,我们按默认,选择“所有用户都具有读写权限”点击创建,完成版本库的新建。



 

 点完成,结束版本库创建。

3.3.2 创建用户

下面创建用户,如下图:



右击 Users 打开创建用户对面框,输入用户名和密码,点击OK,



右击 组 ,点击 创建组



输入组名 Dev,点击下面的 添加,把前面创建的用户 yu 加入到该组,点OK

3.3.3 用户授权

在前面创建的版本库名 MyObject上右击,打开菜单中选 Properties...



 

打开的权限窗口如下,我们点击 Add..添加用户或组,在这里,我们可以选择组,则表示该组下的所有都具有相应权限,也可以单选用户

 



我们选择dev组名,然后在Permissions中选择 可读可写 权限,如下图



至此,服务端配置完成。

3.4 SVN客户端安装

下面我们进行SVN客户端安装,找到我们之前下载的安装包,



 

先安装“小乌龟”TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi,再安装语言包LanguagePack_1.9.3.27038-x64-zh_CN.msi



 

客户端的安装没什么好说的,全程下一步。

语言包的安装也是全程下一步(如果喜欢英文版,这步可以省略)



语言包安装后,并不会马上显示所安装的语言,需要一步设置。

我们在开始菜单中,找到 TortoiseSVN的设置,也可以在你的电脑上任何文件上右键打开setting 



打开设置窗口,点击 General ,在右边的语言选项中,选中简体中文 ,即可完成语言设置。

至此,客户端安装完成。 

3.5 SVN客户端基本操作

这节是重点,将学习如何使用SVN进行版本控制

3.5.1 签出项目文件

首先我们在客户端电脑上创建一个项目文件夹,MyObject



 

右击项目文件夹,点签出



打开签出窗口,



在这里,我们要输入前面服务端中创建的版本库地址,我们可以在Server端Copy这个地址,打开Server端



右击版本库,点击复RUL,然后粘贴过来



签出深度有几项可以选择,这里我们默认全递归,即可。点击确定

这时会弹出一个认证窗口,在这里需要验证一下用户,使用我们服务端创建的用户



下面的保存认证,默认为选中,选中后,下次再执行签出等操作 ,则无需再次验证。如果本台电脑为你一个人使用,可以保存,如多人使用,请注意安全。

点击确定后,如果认证用户成功,则签出完成。



 签出完成后,因为我们的版本库中并没有任何文件,因此本的项目文件夹也是空的,此时,我们如果显示隐藏文件及文件夹



可以看到,文件夹MyObject中多了一个隐藏文件夹



.svn这个隐藏文件夹中记录着非常重要的信息,包括工作文件版本和本地副本时间等,千万记住,不要手动修改或删除,否则你本地的副本将被破坏,无法进行正常版本控制了。

3.5.2 文件9种图标含义

我们在安成SVN客户端安装后,需要重启电脑或注销电脑,就会发现加入版本库的本地文件或文件夹有一个SVN专有小图标,一共有9种,以下是几种图标的含义:

绿色的勾:图标表示这是一个最新取出的工作副本,他的Subversion状态是normal。

灰色的勾:灰色图标表示”只读”,如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。

红色感叹号:当你开始编辑一个文件,这个文件的状态就会变成modified,图标也会变成红色圆圈带一个感叹号。这样你就可以轻易的知道自从上次更新以来都有修改过哪些文件,需要提交哪些文件。

黄色感叹号:三角符号带感叹号,表示在一次update中产生了一个冲突(conflict)。

蓝色加号:意味着这个文件或文件夹已经被计划加入到版本控制之下。

红叉叉:表示相应文件或文件夹被计划删除(deleted),或者表示文件缺失。

灰色一行:表示不受版本控制,忽略版本控制。

蓝色问号:暂时还没收到版本的控制,但是没有被忽略。

锁扣:表示文件被锁定,他的Subversion状态是normal,必须先释放锁才能让别人的更改提交。

其实这个图标,我们也可以在SVN客户端设置中去更改样式,下面是SVN的几种样式,可供选择。(不得不说,SVN想的非常周到,优秀软件就该如此)



3.5.3 添加文件到版本库(Add)

 新文件的添加,有两种方法,一是点Add(加入)先加入到变更列表,再提交;二是直接提交,

个右键菜单分别对应 加入和更新,



如果先 点加入后,再提交,文件会自动选中,并且状态为 增加,如果直接提交,需要手动选中该文件,如下图,点击确定,完成文件添加。

此时,我们在服务端中,点击刷新版本库,会发现已经成功加入了一个新文件。



3.5.4 删除文件(Delete)

如果被删除的文件,还没有加入到版本库,则可以直接删除,如果已加入版本库,则需要通过右击文件,选中SVN中的删除



 

 删除文件后,其父目录会有一个红色叹号,表示该目录下的文件被修改了,此时,我们需要提交一次父级目录。

3.5.5 文件改名(Rename)

 修改文件名,选中需要重命名的文件或文件夹,然后右键“TortoiseSVN更新文件名“,在弹出的对话框中输入新名称,点击”确定”按钮,并将修改文件名后的文件或文件夹通过 “SVN 提交”提交到SVN服务器上。

3.5.6 还原(Revert)

还原文件或文件夹到以前的版本,如下



右击文件或文件夹,在TortoiseSvn,点击 更新至版本....



打开版本更新窗口,在显示日志中选择前期版本或在版本号中输入要回退的版本号,即可。

3.5.7  检查更新(Check for modifications)

这个功能,可以看到你所做的哪些变更没有提示,包括文件或目录的增加、修改、删除等,点击检查版本库,还可以看到其他人改动的内容



 

3.5.8  更新(SVN Update)

更新本地文件与SVN服务器上最新的版本一致,在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN更新” (获取指定版本中的内容,点击右键执行SVN菜单中的“更新至版本“)。

注意:这里如果你新建的文件或文件夹没有加入到Server,更新后,文件或文件夹依然存在(这也是SVN人性化的地方,求同存异,不会因为更新版本而丢失已经创建的文件)

3.5.9  解决冲突文件

在更新以后,经常会有冲突文件的存在,这是因为,SVN支持不锁定更改,也就是你编辑文件的同时,别人也可以更改此文件。如果你们更新了同一文件的同一段代码。更新后,就会生成三个备份文件,并且标记冲突文件。

对于这种常有的问题,该如何解决,有两种解决方案:

1.放弃自己的更新,回滚到以前版本

2.双方协商,修改代码并提交

当然SVN也为我们提供了冲突代码比较功能



打开”与前一版本比较“,可以通过比较,来修改代码,达到一致后提交。

如果冲突代码处理不当,一方代码丢失,也不要怕,SVN仍然可以通过”更新至版本“回复丢失的内容。

3.5.10 显示日志(Show log)

右击SVN菜单中选择”显示日志“可以查看谁在什么时候做了哪些操作。



 

 

3.5.11 版本浏览器(Repo-browser)

右击SVN菜单中选择”版本浏览器“,输入URL地址,未登录的需要验证用户,在此可以看到其他人对该版本的操作情况,比如锁定等操作。



 1.建立分支

      了解了分支的作用,假设我们有一个项目有很多功能,团队配置20人,主要功能有:核心业务模块、TCP/IP通讯模块、射频卡/IC卡通讯模块等。为了合理安排人员,我们将人员分为三个小组,第一小组负责主干业务模块开发,当然这些模块需要两个通讯模块的支持,另外两个小组各负责一个分支开发,当分支相对完善的时候合并到主干模块。

      基于上面的开发模式,我们利用SVN的分支功能,下面具体介绍如何建立主干和两个分支。

      先把我们主项目签入到服务器上,具体操作上篇中已经介绍了,签入后,我们打开服务器端,看一下主项目结构,如下:



 

项目名称“TestObject”,下面有三个模块,主模块“Main”,还有两个模块“RfIc”、“TcpIp”

废话不多说,我们创建两个分支分别名为  TestObject_Branch_1  和  TestObject_Branch_2

具体操作如下,在客户端机器主项目 目录上右击,点击 TortoiseSVN ,点击 “分支/标记”



在打开的分支窗口中



输入分支名称,路径为根目录,在下面目标URL,可以看到 新建的分支的完整路径,如上图,点确定



提示复制完成,我们第一个分支创建完成了,分支开发组的同学,需要使用分支路径打开项目。

同样的方法,我们再创建第2个分支 TestObject_Branch_2,这时候项目文件夹中仍然只有主干部分,我们想看到其他分支,可以在项目文件夹中,右击,SVN更新



 可以看到 两个分支都更新到 本地了

 2.分支合并到主干

不同的项目组成员可以通过分支进行开发,版本相对稳定的时候,可以随时合并到主干,下面介绍一下如何合并到 主干

在此之前,我们先对两个分支及主干进行改动,分支开发,肯定会有很多地方产生差异。

我们先把主干项目的文件 \TestObject\Mian\index.txt进行如下改动



 

然后,再在主干下增加一个文件 second.txt

 


SVN提交,主干项目

然后,我们分别在两个分支上改动 \TestObject_Branch_1\Mian\index.txt  和  \TestObject_Branch_2\Mian\index.txt 文件 ,





 

并且在两个分支分别建立两个新文件 ,如下





分别提交以后。主干和两个分支,不仅主页文件不同,并且分支内的文件也不同

我们可以在服务端查看三个项目的结构,如下:



经过一段时间开发后,如果两个分支相对稳定,如何合并到主干呢?

注意:合并前,先更新三个项目到相到 稳定 待合并版本



如上图,在主干项目右击,TortoiseSVN,点 合并



按上图选择,点下一步



 

上面的URL是主干URL,下面是分支URL,我们有两个分支,重复一次合并,即可

两个分支合并完成后,我们再看一下主干目录下的变化



 

打开变更的文件 index.txt



我们看到,这里变更为最后一个合并的分支2的部分变更,刚才有合并分支2的时候,如果代码有冲突,会有一个提示,我选择的是 解决冲突,那么就替换掉了,如果选择不解决,可以保留主干上的更改。

具体要看冲突代码而定,即使我们手抖点错了,也可以通过上篇文章中提到的恢复功能,进行版本回退。

3.主干合并到分支

在项目推进过程中,如果分支代码需要主干部分的变更,我们可以通过主干合并到分支

我们先在主干上建立一个新文件fast.txt



提交主干,更改。

用同样的方式在分支上右击,打开 合并 窗口

注意:这次需要在要更新的分支上打开合并



合并窗口如下



和上次不同的是,主干 --》 分支,我们需要先选分支URL,下面选主干URL

完成后,我们看一下 分支1的目录





如上图,我们看到 ,分支1上合并过来了主干的文件 fast.txt.同时也将主干的差异文件也复制过来了

用同样的方法,可以将主干也更新到 分支2,不再赘述。

至此,SVN的分支并行开发就介绍完了,是不是非常方便?

下面我们介绍一下如何在Visual Studio 2013/2015 中使用 SVN,其他版本的 VS也适用

4. Visual Studio 2013/2015 中 SVN 安装

这里接上篇文章,如果直接跳到这里看的同学,可以看一下上篇,URL:http://www.cnblogs.com/yubinfeng/p/5177994.html

前提是我们已经安装了VS 2015/2013 

我们找到上篇中下载的SVN for VS插件安装包,如下



 

双击安装(VisualSvn暂时没有中文版本,不过我们通过上面的介绍,应该已经很熟悉了,它的使用和前篇中介绍的SVN客户端基本一样,只不过,使用环境不同,一个是资源管理器,一个在VS中而已)

 


下一步,同意,下一步



这步,可以看到 ,VisualSvn,会检测你系统中已经安装的VS版本,能选的全选中,下一步,完成安装

完成安装后,我们打开Visual Studio 2015(我以2015为例介绍,其他版本VS类似)



可以看到 ,Visual Studio 2015 中多了一个菜单VisualSVN,如上图,说明我们SVN for Vs插件已经安装成功

下面,我介绍一下如何在Visual Studio 2015中使用SVN 

5. Visual Studio 2013/2015 中使用 SVN 开发

 打开VS 2015 在工具-选项中,设置一下你所要使用的源代码管理器



打开选项窗口



找到源代码管理 -》 插件选择  ,在当前源代码管理插件中,选择 “VisualSVN”,确定

接下来,我们要做的就是 打开已有的SVN服务端的项目或将现有工程加入到SVN服务器



如上图,我们事先没有VS工程,这里我选择 “Add Solution to Subversion...”将当前工程签入到SVN服务器



这里选择一下 将要签入的工程路径,如果当前打开工程,则默认当前工程路径



下一步后,如上图,这里有两个选基, 一是新建一个版本库,另一个是使用已有的版本库。一般情况下,开发电脑和SVN服务器并不是同一台机器,我们选择已有的版本库,如果没有创建,可以先在SVN服务器上创建版本库后,再在这里选择。点下一步



这里输入,我们已经在SVN服务器上创建好的版本库URL,下一步



提示会将现在的工程导入到 SVN服务器指定的版本库,点 导入 ,完成本地工程签入



这时,我们可以看到 解决方案中的文件前面多了一个 小圆点 表示当前项目已经受到版本控制

我们去SVN服务器上看,DataBase版本库,并没有文件,不要急,我们在VS资源管理器中,右击工程,点 Update



 提示,工程文件已签入SVN服务器



此时,第一个版本1已经正式更新到 SVN服务器上了,我们去SVN服务器上看看



没有任何问题。

我们在VS中打开一个文件更改



可以看到 在资源管理器中,文件 前面的绿色 点变成了黄色,表示此文件被更改了。

关于状态图标,我们可以在VS的VisualSVN的选项中,打开,来更改图标样式,这点和Tortoisesvn差不多,只不过,状态只有三种



在VS用使用SVN和在WINDOWS中使用tortoisesvn客户端基本差不多,我们在VS文件管理器中,右击



可以看到 ,菜单中都是我们熟悉的。显示差异,更新,提示,日志,锁定,合并,分支,恢复版本等等,这些我们在前篇 和本篇 中都一一介绍过了,这里不再赘述了。。

至此,SVN的服务器配置,客户端使用,VS中的使用全部介绍完了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: