常用的版本控制软件的介绍(vss,cvs,svn)

另:欢迎各位加群:206981178,共同学习交流

1.vss

VSS6.0现在是作为Microsoft Visual Studio6.0这个开发产品家族的一员,如Visual C++6.0和Visual J++6.0一样。

1. VSS的简单工作原理

Microsoft的VSS6.0解决了软件开发小组长期所面临的版本管理问题,它可能有效地帮助项目开发组的负责人对项目程序进行管理,将所有的项目源文件(包括各种文件类型)以特有的方式存入数据库。开发组的成员不能对该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行调试和修改,然后将修改后的项目文件作Checkin提交给VSS,由它进行综合更新。VSS也支持多个项目之间文件的快速高效的共享。当某个成员向VSS中添加文件时,该文件将会被备份到数据库中,以便所有的成员都能共享该文件。而且每个成员对所有的项目文件所作的修改都将被记录到数据库中,从而使得修改的恢复和撤销在任何时刻,任何位置都成为可能。小组的成员可能得到该项目的最新版本,对它进行修改,并保存一个新的版本。

VSS的项目组织管理使得开发小组的协调变得简单容易且很直观,当一个和一组文件发放给另一个成员,小组,W eb站点或是任何其他的地址,VSS确保他们之间的真正共享及所选的一组文件的不同版本的安全性。现在,越来越多的开发者可以通过他们的开发环境来访问VSS的功能。而且VSS可以很容易地于Microsoft Access、 Vi sual Basic、 Visual C++、Visual FoxPro和其他的开发工具集成在一起,一旦VSS 集成到开发环境中,就可以象控件一样使用,能够很好地体现出VSS的易用性和强大功能。

2.VSS中的几个重要概念

为了更好的了解VSS,有必要对如下一些概念给予说明。

首先是项目的概念,所谓的项目是一组存在VSS中的文件(任何类型),可以在项目中或是项目之间进行文件的添加、删除、编辑和共享。一个项目与操作系统的文件夹有很多的相似之处,但它更好地支持文件合并、历史和版本控制。所有的文件存在VSS数据库的项目中,开发组成员不能在VSS中的主备份文件上工作(除了检查和版本比对等特殊情况外)而是VSS为每个成员在各自的工作目录下提供一个拷贝以供工作。尽管在没有工作目录的情况下也可以查看某个文件,但如要真正在VSS管理下工作,就必须要创建一个工作目录。

VSS能够维护一个文件的多个版本,包括一个从不同版本之间进行修改的记录。版本控制包括如下方面:

组内协调-在一般情况下,确保在任何时刻都只有一个成员对某个特定的文件进行修改,这样可以防止文件被其他成员的修改意外更新。当然,VSS管理员可以改变此缺省设置以允许对单个文件同时有多个Checkout,并且仍禁止对他人的修改进行覆盖。

版本跟踪-对老版本的源代码和其他文件进行归档和跟踪,而且这些版本能够被重新得到以便进行bug跟踪或其他目的。

跨平台开发-支持同一代码在跨多个开发平台时的版本控制。

重用或面向对象代码-跟踪哪些程序使用了哪些代码可被重用的模块。

版本控制的涵义在以后的章节中将会得到更进一步的论述。

我们已经知道,VSS提供版本控制和历史服务,以保证一个文件的每个版本都是可恢复的。VSS用日期/时间戳来记录文件是何时被Checkout或是何时被修改的,它主要有三种方法来跟踪文件和项目的版本:

版本号:这是由VSS维护的内部数码,用户对它没有控制权。每个文件和项目的每个版本都有一个版本号,这些版本号总是一个整数且是递增的。

标签:这些是用户赋给某个项目或文件的某个版本的一个字符串,可以是任何格式的长度不超过31字符的字符串。

日期/时间戳:它给出了一个文件何时最后被修改的信息,或者是一个文件何时被Checkin。VSS同时支持 12小时和24小时的时间格式。

工作目录是用户真正对项目文件进行调试修改的地方,当用户Checkout或提取一个文件时,VSS将该项拷贝到用户的工作目录下,当用户修改了该文件并将其Checkin或提交时,VSS再将它从用户的工作目录拷回到VSS 的数据库中。在用户作Checkout时,VSS将会自动管理他的工作目录,诸如创建必要的子目录。而且工作目录可以随时创建或修改。

3. VSS6.0的一些新增的特征和功能

归档和恢复-在VSS6.0中这两个操作是在一个用户界面友好的VSS管理员wizard中进行的,而在以前的版本中,它们只能通过命令行来实现。

移动文件-当用户移动文件时,VSS6.0自动将该文件共享到一个新的项目中,并在原项目中将其删除。在新项目中,该文件的属性是共享的。

多个项目之间的差异比较-该功能允许用户在不同的项目之间进行差异比较。

单个文件的展开-在以前的版本中,VSS只能展开一个目录(文件夹),在VSS6.0中,同时可以展开一个文件。

快速提取-由于VSS6.0在性能上的提高,现在的文件提取速度比以往VSS版本的快两倍左右。

历史信息过滤-VSS6.0支持查看那些没有标签的文件和项目的历史。

清除临时文件夹选项-该新功能可使用户很方便地清除临时文件夹。

检查外部的超连接-在VSS的较早的版本中,只有内部的超连接和项目内的跳转才得到检查,VSS6.0允许用户检查项目之外的超连接和跳转。

创建打开VSS数据库的快捷键-用户可以使用VSS Explorer中该新功能创建一个打开某个特定VSS 数据库的桌面快捷键。

HTML格式的帮助-VSS的以往版本使用的是WinHelp格式。



2.cvs

本文是结合CVS的应用经验,发挥自己的想象力,设计的CVS实现原理。至于真正的CVS是否是这个原理,没有做相关调查。本文设计的CVS实现原理能够解释我所遇到的所有CVS操作,因此该原理有助于学习CVS。
CVS有服务器和本地沙盒构成。在服务器端对每个文件维护着一个修订号(Revision,简记为SR),每次对文件的更新,都会使得文件的修订号加1。在沙盒中也对每个文件维护着一个修订号(简记为CR),CVS正是通过这两个修订号的关系,来进行Update,Commit和发现冲突等操作操作的。下面,看一下各个操作与修订号的关系:
1)commit操作。commit操作把本地对文件的修改提交到服务器端。当执行commit操作时,依次做两件事:a)判断CR是否等于SR,如果CR
2)update操作。update操作把其他用户对文件的修改更新到本地。当执行update操作时,依次做两件事:a)判断CR是否等于SR,如果CR
3)updatespecial操作。功能比update更强大,参数更多。如果用户想放弃本地修改,而与服务器端同步,可以使用该操作。并选中“cleancopy”复选框(注:只对于tortoiseCVS用户)。此外,还可以选择具体同步到服务器的那个版本。
4)checkout操作。从服务器端获得副本,并初始化CR,使之等于SR。
使用CVS有2个操作顺序,一是先commit,如果冲突再执行update,否则不执行update,将此操作顺序称为commit优先法。二是先update,修改文件后,再执行commit,如果冲突,需要再执行update,将此操作顺序称为update优先法。 update优先法更好一些,因为可以更早的发现冲突,并采取措施,推荐用这个方法使用CVS。
用update优先法使用CVS演示如下图。注意:图中N表示修订号;红色部分是为了演示Update冲突类型,假设用户执行的操作,正常情况下,没有这一步。

原理图:



3.svn

Subversion支持linux和windows,但较多安装在linux下

svn服务器有两种运行方式:独立服务器和借助于apache。svn://<wbr><wbr><wbr>http://</wbr></wbr></wbr>

svn客户端tortoisesvn

svn的基本工作思路: 在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里德项目文件下载到</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>本地,然后开发人员可以在本地修改,左后用svn命令进行提交,游源代码库统一管理修改。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

版本控制解决了:

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>*代码管理混乱</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>*解决代码冲突困难</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>*在代码整合期间引发bug</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>*无法对代码的拥有者进行权限控制</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>*项目不同版本的发布困难</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

SVN工作原理示意图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值