[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

本篇导读:

上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VSS离职的。其实使用什么代码管理工具要看项目而定。毕竟使用何用代码管理工具,是项目管理者根据需要来决定的,如果你是一个开发人员,首先要让自己的技术精进一点。下面根据我个人理解,把这几种常见的代码管理工具使用场景简单介绍一下。

1.几种代理管理工具的适用场景

A.如果你的项目是5-6人的小团队,那么使用VSS已经可以了。

B.如果是几十个人的团队,团队中需要创建代码分支,或者需要跨平台,跨地区开发,那么SVN是一个不错的选择。

C.对于较大型的项目,如果是使用VS开发,那么使用TFS是个不错的选择,和微软自己的产品相结合,可以说无缝。并且提供了项目计划、测试管理、代码评审等一揽子功能,如此强大的项目管理工具,我们不能说他不好,只是比较重量级,光就服务端安装包就2G多,并且需要结果SqlServer数据库工作 。

D.如果你的项目是开源项目开发人数不定,并且存在较多分支,那么推荐使用GIT。

2.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地址,未登录的需要验证用户,在此可以看到其他人对该版本的操作情况,比如锁定等操作。

未完待下篇继续……

3.6 本节要点

本节主要介绍了一个非常优秀并且使用人数较多的源代码版本控制工具SVN(全名:TortoiseSVN),它的使用场景适用于几十人的中小型开发团队,具有跨平台(HTTP方式访问)、跨地区、轻量级等众多优点。

网上介绍SVN的贴子也有不少,本篇也参考了一些其他文章,写的比较详细,尽量做到不要遗漏。SVN的缺点比起他的优点几乎可以忽略,轻量级就决定了他的定位就是中小团队,因此,你不要说他和其他管理器比较不能支持高并发,超多用户等等。最后因为篇幅太长,看起来会很累,SVN的分支等高级的内容会在下一篇博文中继续介绍,此外下篇还会介绍SVN在Visual Studio 2013/2015中的使用,还有一些SVN的使用小技巧,希望支持!

==============================================================================================

返回目录

<如果对你有帮助,记得点一下推荐哦,如有有不明白或错误之处,请多交流>

<对本系列文章阅读有困难的朋友,请先看《.net 面向对象编程基础》>

<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>

.NET 技术交流群:467189533

==============================================================================================

时间: 2024-10-06 00:23:03

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)的相关文章

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 http://www.cnblogs.com/yubinfeng/p/5182271.html 本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html 前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git.可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系.Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)

[.net 面向对象程序设计进阶] (1) 开篇

[.net 面向对象程序设计进阶] (1) 开篇 上一系列文章<.net 面向对象编程基础>写完后,很多小伙伴们希望我有时间再写一点进阶的文章,于是有了这个系列文章.这一系列的文章中, 对于.net 基础的一些知识,推荐小伙伴们阅读一下我上一系列文章<.net 面向对象编程基础> ,也就是说本篇文章在阅读前,最好是掌握了.net 的基础知识. 首先,“.net 面向对象程序设计进阶”这一系列的文章涉及的范围比较广,每一节相当于.net的一个分支,基本可以作为一个独立的课题了.只所以

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库,除了拥有良好的性能之外,功能也是非常强大的. 本节会详细说明这个类库.此外,对于不喜欢使用第三方类库的同学,会整理一个基于微软类库的通用Json类. 读前必备: 本节主要介绍一款第三方类库和一个自己整理封装的类库,说起到封装

[.net&#160;面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化

[.net 面向对象程序设计进阶]  (9)  序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对象转向其他数据格式的过程,即序列化(Serialization). 与之相反的过程就是反序列化(Deserialization).掌握和利用好序列化和反序列化的方法,对提高面向编程技术很有益处. 读前必备: A.类和类的实例  [.net 面向对象编程基础]  (9) 类和类的实例  B.类的成员

[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化

[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.NET中快带序列化和反序列化.最后介绍在使用.NET序列化JSON过程中的注意事项. 读前必备: A.泛型       [.net 面向对象编程基础]  (18) 泛型 B.LINQ使用  [.net 面向对象编程基础] (20) LINQ使用 1. 关于JSON JSON的全称是”JavaScrip

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类 本节导读:本节主要介绍通过序列化接口IXmlSerializable实现XML序列化和反序列化,整理了XML基础操作及序列化的通用类(包括XML及节点的基础读写操作,XML到DataSet\DataTable互转换操作,XML序列化及反序列化通用方法等). 读前必备: A.类和类的实例 [.net 面向对象编程基础]  (9) 类和类的

[.net&#160;面向对象程序设计进阶]&#160;(16)&#160;多线程(Multithreading)(一) 使用多线程提高程序性能

[.net 面向对象程序设计进阶] (16) 多线程(Multithreading)(一) 使用多线程提高程序性能 本节导读: 多线程(Multithreading)使我们程序可以同时进行多任务处理,直接提高了程序的执行效率,学习多线程对提高程序运行能力非常必要,本节主要介绍多线程原理及.NET中多线程的应用. 1. 关于多线程 在介绍多线程之前,先了解一下进程. 进程:独立运行的程序称为进程.(比如Windows系统后台程序,也可以称为后台进程) 线程:对于同一个程序分为多个执行流,称为线程.

[.net 面向对象程序设计进阶] (2) 正则表达式(一)

[.net 面向对象程序设计进阶] (2) 正则表达式(一) 1.什么是正则表达式? 1.1正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简写为regex.regexp或RE),是计算机科学的一个重要概念.他是用一种数学算法来解决计算机程序中的文本检索.区配等问题. 1.2正则表达式语言支持  正则表达式其实与语言无关,在很多语言中都提供了支持 ,包括最常用的脚本语言Javascript.当然C#语言也毫不例外的提供了很好的支持.     正则表达式语