引言:为什么需要版本控制?
1.情景1:程序员A和B共同修改同一个模块,两人都辛辛苦苦改了好几天、最后都回存到服务器上。可到使用的时候,发现有一个人的修改被冲掉了!
2.情景2:用户1发现一个错误,交给程序员A去修改,A修改之后直接改动了用户正在使用的版本,用户2想要增加一个功能,交给程序员B去做,B也如法炮制,结果导致A的改动被B覆盖而丢失
3.情景3:用户提出需要一个新功能,程序员A辛辛苦苦改了几天,改完后用户又说新功能不要了,程序员A发现原来版本的程序找不到了,又花了几天时间把程序改了回来。
版本管理器的简单工作原理
版本管理器将所有的项目源文件(包括各种文件类型)以特有的方式存入数据库。开发组的成员不能对该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行调试和修改,然后将修改后的项目文件作Checkin提交给SGV,由它进行综合更新。
用户可以根据需要随时快速有效地共享文件。文件一旦被添加进SGV,它的每次改动都会被记录下来,用户可以恢复文件的早期版本,项目组的其他成员也可以看到有关文档的最新版本,并对它们进行修改,SGV也同样会将新的改动记录下来。
下面介绍一些.net平台下的源代码管理工具
Visual SourceSafe、CVS、PVCS、ClearCase、SourceGear SourceOffsite、SourceGear
Vault
SourceGear Vault(SGV)与Visual SourceSafe (VSS)
安全性(数据库/文件共享,目录权限)
稳定性(>1G)
速度(增量存储算法,IO)
支持远程访问
与IDE集成
SGV的解决方案
在一台服务器上安装SGV的WebService和SQL数据库,创建一个为整个项目存放用的数据库(Repository),然后在该数据库中创建各个文件夹,并由SGV管理员为小组的每个成员创建一个帐号及他们各自的权限;
在开发小组其他成员的PC上安装SGV的客户端软件,并创建自己的工作目录,这样在软件的开发过程中,他们只要通过集成IDE或客户端软件登录到SGV服务器上,Checkout当前要进行工作的项目或文件,如有修改的在工作结束时将其Check
in提交给SGV服务器进行统一更新。
已用VSS管理的工程项目如何处理?
方法一
“文件”-“源代码管理”-“从源代码管理打开”-登录SGV-选择工作目录-选择工程项目
方法二
1. “以断开方式工作”打开本地项目
2.“文件”-“源代码管理”-“更改源代码管理”
集成IDE的基本操作
- 添加解决方案、工程项目至源代码管理
- 从源代码管理中打开或添加项目
- 更改源代码管理
- 签出
- 撤消签出
- 签入
- 查看状态(SourceGear Vault 属性)
- 获得最新版本
- 查看历史
通用客户端的基本操作
- 修改密码(Tools-Chage Password)
- 注销(File-Disconnet From Server)
- 项目选择(File-Choose Repository)
- 创建文件夹
- 添加文件夹/文件
- 自动探测新文件
- 搜索文件
- 删除/恢复文件
- 查看/修改文件
- 创建工作目录
- 签出文件夹/文件(Check Out)
- 撤消签出
- 签入文件夹/文件(Check In)
- 共享文件夹/文件(Share)
- 拆分文件(Branch)
- 重命名文件夹/文件
- 移动文件夹/文件
- 查看历史信息(Show History)
- 获取早期版本
- 给文件或项目建立标签(Label)
- 禁止修改文件夹/文件(Pin)
- 文件夹/文件忽略操作(Cloak)
好了,帖了这么多东西,大家基本应该知道版本控制的重要性和原理了吧,还有好多客户端的基本操作和技巧,大家可以在使用中慢慢研究和体会,下面用帖图的方式演示安装和使用的过程:
安装SourceGear Vault3.5.2(可以从官方网站http://www.sourcegear.com/vault/downloads.html 下载)
在服务器安装一般不选择Client(除非Server和Client同时安装到一台机使用),如下图。
选择IIS的进程模式,我们使用默认的NETWORK SERVICE(你也可以选择定制Custom,不过这个要使用一个专用的Windows帐户,可以按需要配置)
设置管理员(默认管理员帐户是Admin)密码,如下图:
输入连接到SQL的验证信息,下面我们选择的是SQL Server验证模式,登陆名为sa(此用户在SQL中必须有权限可以建立数据库)
下面是建立数据信息,应该是编码模式的选取,这里我没有做基它设置,直接点OK
安装完成后,VaultServer会在IIS中建立两个虚拟目录VaultService、VaultShadowFolder,这可以通过Web(只读)下载,可查看最近变化,可查看各版本。在这里推荐Vault的理由很多,因为它基于SQL
Server,因为它使用.NET编写,因为它采用XML Web Services作为通信协议,还有一点别忘记了,SourceGear
Vault提供了免费一个月10用户的试用授权,如果不怕麻烦的话,您也可以每个月更新License,当然如果你是个人用户,只是管理你自己的一些代码,你大可不用这么麻烦,免费试用授权到期后你还可以继续使用Admin帐户,这是没有限制的。
获取Serial Number:https://store.sourcegear.com/sgstore/vaultdemo.aspx
再看一下服务器端的Admin Tool的登陆介面:
用Admin帐户登陆进去后可以对其它用户进行权限的分配和管理等等设置,这里就不再多说了,大家自己研究一下吧。
以上就是服务器端的安装过程,客户端没有什么安装技巧,在安装过程中记得勾上“Make Vault you default SCC
provider”就OK了,现在俺使用VS.NET2005建立的一个项目签入VaultServer的过程进行截图说明:
在VS.NET2005的工具--选项中调出下面图,可以看到安装完SourceGear Vault后的源代码管理插件(默认也是不用修改的,除非你安装多个源代码管理软件)
下面我们看一下如何将解决方案添加到SourceGear Vault3.5.2中,点击解决方案右键,如下图:
出现连接到服务器的窗口,输入用户名和服务器名或IP地址(首次建立必须是使用有权限的帐户)
我们为本项目建立一个文件夹“相册管理”
如果你还可以“相册管理”文件夹中建立多个文件夹,如“开发文档”和“源代码”,可以分别把开发文档和源代码放到这两个文件夹中,大家可以看到这两个文件夹前面我分别加了一个1和2的数字,呵呵,这可是一个技巧问题,可以让这两个文件夹按顺序排序呵。好了,建立好目录后,我们选择“2源代码”把项目签入到此文件夹中就OK咯。
在使用时还有一些小技巧问题,比如可以设置你在修改源代码里,是否自动提示签出,如果设置了“提示签出”,则在你修改代码时自动会提示你签出的文件和注释,你可以在注释中记录下你签出的原因等,好了,有了这篇文章大家应该可以方便着手管理好自己写的代码咯。
我们看一下VaultServer.3.5.2带来的以下好处:
1、服务器端基于 Web Service,因而无需像 VSS 那样通过文件共享方式访问(并开放写权限)
2、用户及用户组的管理(权限和VSS一样,仅有基本的几种,远远不如 StarTeam,但作为 CVS 已经非常足够)
3、类似 VSS 的版本差异比较、历史纪录、合并、分支/分支合并等功能,一点儿也不差
4、关键数据保存在数据库中(SQLServer),并支持服务器端备份
5、提供 WebClient,但目前仅仅只能通过 Web 方式浏览和查看文件内容
6、划分 Repository 知识库,这样管理和使用起来就更加方便了
7、支持安全套接层(SSL(Secure socketlayer))协议连接,这样就不必太担心基于 HTTP/WebService
所带来的安全的问题了——不过我还没有能成功设置通过Internet进行访问,使用VSS可以成功访问,但由于访问速度太慢,所以放弃了。现在是使用SourceGear
Vault3.5.2+VPN进行Internet访问,这比起HTTP/WebService 安全多了,而且速度非常快,比起VSS的速度要快上10倍都不止(估计时间,俺没有真正计算过时间,只是大概估算了一下)。
有了它,最大的好处是回到家后依然能够与公司的服务器保持连接,而不必断开 Solution ——第二天上班的时候又不得不小心翼翼的比较/合并,并
Checkin 了。
不管文件类型(文本文件、图像文件、二进制文件、声音文件或视频文件)是什么,都可以通过将文件存入数据库来帮助用户管理项目。当您需要在两个或多个项目间共享文件时,您可以快速和有效地共享它们。当您向Vault添加文件时,文件被备份到数据库中,使同组用户都能访问文件,对文件的任何改动都会存入Vault这样您就可以在任意时候恢复文件的历史版本。用户团队的组员可以得到任一文件的最新版本,对文件进行修改,和在数据库中存入文件的新版本。
|