zoukankan      html  css  js  c++  java
  • Visual Studio 2005 TFVC周年庆

    【已发表于《程序员》2006年第12期“Visual Studio 2005周年庆”特刊】

    正是去年的这个时候,微软可谓重磅出击,一口气发布了多款重量级产品,其中最能加速开发人员心跳的恐怕就属Visual Studio 2005。Visual Studio 2005及.NET 2.0的发布,不仅标志着微软在.NET平台的日渐成熟与壮大,而且将能够用更加强有力的工具来开发功能更加丰富、体验更加完美的Web及桌面应用程序。

    作者在这里当然无法将整个Visual Studio 2005产品系列都逐一介绍,为了配合本期专刊的推出,我在这里仅以自己的能力和经验向大家展示Visual Studio 2005中的版本控制系统。

    整体介绍

    Visual Studio 2005 Team Foundation Version Control是微软推出的新一代版本控制系统,提供了标准的源代码版本控制功能,该功能具有很好的伸缩性,可以很方便地为数百人的大型开发团队提供支持。除了典型的源代码管理功能外,它还是企业级软件配置管理产品,为开发团队提供集成的版本控制、问题跟踪和过程管理。

    Team Foundation Version Control包括以下功能:
    ●    完整的版本控制功能集;
    ●    签入(一次签入一个更改);
    ●    强大的分支与合并功能;
    ●    搁置功能;
    ●    签入策略。

    TFVC在与其它Team Foundation功能集成到Visual Studio环境当中的同时还提供了一个独立的图形用户界面和命令行接口,这样就可以有效地提高管理人员的工作效率,减少操作步骤,使他们可以将精力集中于项目的管理方面。

    作为项目的开发人员,无论是程序员还是美工甚至是专职的文档编写员,都很可能需要将自己的工作项目加入到TFVC当中来以便于和整个团队共享。

    TFVC向开发人员提供的操作包括:
    ●    从源代码服务器检索文件;
    ●    向源代码服务器添加文件;
    ●    签出文件然后进行必要的修改;
    ●    签入修改过后的文件;
    ●    从源代码服务器删除文件;
    ●    比较文件差别;
    ●    合并文件之间的更改。

    TFVC的管理员的主要职责是负责维护软件配置管理系统中存储的数据完整性,根据开发团队采用的配置管理方法来管理服务器中的源代码并对这些代码进行分支并合并分支之间的更改,另外,管理员还需要从位于软件配置管理系统中的文件创建可重现的生成,并在生成过程中创建文件快照以便于以后检索。此外还有一些可能不太常用的工作,比如为日后的评审工作方便而保存生成过程中的中间和最终输出。

    TFVC向管理员提供的操作包括:
    ●    对源代码服务器中的代码进行分支;
    ●    对当前开发状态的快照创建标签;
    ●    合并源代码服务器中各分支之间的更改。

    TFVC相对于Visual SourceSafe的改进

    一直使用Visual Studio集成开发环境的读者朋友可能大多数过去都使用过或者目前仍然正在使用Visual SourceSafe这款相当著名源代码管理软件,那么您可能心里早就有疑问了:既然Visual SourceSafe也推出了2005版,那么为什么还要TFVC呢?

    很好,这是一个值得花一定篇幅来回答的问题!

    如果把Visual SourceSafe和TFVC分别看作是两个功能集合,那么它们之间存在着一个交集,这个交集就是它们所能完成的共同的功能,例如:同时开发产品的多个版本,在不影响其它版本的前提下对产品的已发布版本进行更改,快速检索相关源文件,确定做出更改的用户和时间,比较文件的两个版本以及将在版本之间移动更改。这些都是日常的版本控制及源代码管理中出现最频繁的工作任务。那么您可能已经想到,如果没有差别或者差别很小的话是完全没有必要再推出TFVC的,只需要对Visual SourceSafe做一些改动或者升级就行了。那好,我们现在就把精力集中在这两兄弟之间的差别上吧。

    系统结构与权限设置

    Visual SourceSafe是一款仅包含客户端的源代码管理系统。它的客户端(如SourceSafe Explorer和用于Visual Studio的插件)从Visual SourceSafe数据库中进行读写,该数据库是通常存储在共享网络文件夹中的文件集合。而TFVC是客户端—服务器源代码管理系统,它使用.NET Web Services访问存储在Microsoft SQL Server数据库中的项。由此可见,TFVC源代码管理的体系结构显著地提高了性能和可靠性。

    Visual SourceSafe的用户权限和分配是与Visual SourceSafe数据库文件夹的Windows共享权限无关的,您可以为特定的项目或个别用户设置权限和分配,但必须向所有用户授予对数据库文件夹的相同访问权限。因此,对于所有Visual SourceSafe用户,无论Visual SourceSafe为其指定的项目权限是什么级别,他们都可以直接访问这些共享文件夹并对所有Visual SourceSafe数据拥有完全控制权。在TFVC中,用户具备的操作权限及项目访问权限受Windows用户帐户的限制,由Internet Information Server执行用户身份验证,访问Microsoft SQL Server数据库的权限无需赋予执行源代码管理操作的个别用户。因此,较之基于文件系统的Visual SourceSafe而言,TFVC具有更加安全、可靠且易于管理的特性。

    TFVC中的事务性操作

    由于Visual SourceSafe没有服务器组件,因此涉及将数据从客户端传输到数据库的操作是非事务性的。一旦发生问题,操作是无法回滚的。如果在写入操作期间发生了像网络连接断开或计算机非正常关闭等诸多令人头疼的问题就很可能会破坏受影响文件的完整性并丢失信息。前面提到,TFVC是客户端—服务器源代码管理系统,该系统利用不会受到网络连接等问题影响的存储过程在数据库中执行写入操作。此外,还使用事务执行写入或更改操作以保证在这些操作出错时可以回滚。这种体系结构确保了源文件不会无意中遭到破坏。它还确保了包含相关更改的文件组可以作为测试良好的变更集同时全部提交给源代码服务器。因此TFVC可以保证您的资源始终处于安全的保护之下,而如果是使用Visual SourceSafe,恐怕有时候您不得不暗自祈祷自己的运气不要太糟。

    新概念:变更集

    上一段中提到了一个Visual SourceSafe中没有的新概念“变更集”。变更集是TFVC存储与单个签入操作相关的文件和文件夹修订、指向相关工作项的链接、签入说明、签入注释以及提交更改的用户等其他信息的逻辑容器。在签入一组挂起的更改时,TFVC会在源代码服务器中创建一个新的变更集,并为它分配一个唯一的编号。变更集编号按顺序递增。两个变更集不能具有相同的签入日期/时间,由此特性,变更集也用于表示服务器状态的特定时间点。

    如果把Visual SourceSafe看作是一个普通的男人,那么TFVC恐怕就是施瓦辛格一样的壮汉。相比Visual SourceSafe支持20人的开发团队规模,TFVC最多可支持高达500人的团队。Visual SourceSafe对于服务器数据量的大小限制在4G左右,而TFVC则可以达到Microsoft SQL Server数据库允许的上限(只要您的硬件也能存储下如此多的数据)。

    与 Visual SourceSafe 不同,TFVC在您签出文件时不执行静态Get操作。在TFVC中,多个用户可以同时对同一项进行签出和更改,而在Visual SourceSafe中,默认情况下以独占方式执行签出,但您可以在TFVC中锁定某一文件,以防止其他用户签出该文件或签入更改。TFVC将会隔离正在工作去执行操作的用户以保证不被其他用户做更改所影响。用户可以根据需要来执行Get操作,以便于控制在何时接受其它用户的更改。理论上讲,当用户这样做的时候,将会更新源代码的整个配置,而不仅仅是几个文件,原因是一个文件的更改通常取决于其它文件的相应更改,因此用户必须确保他仍然具有一个能够进行生成和测试的一致的源代码快照。基于这样的考虑,TFVC在用户执行签出操作时不会对正处于签出状态的文件执行Get Latest操作,因为更新正在签出的文件将违背一致的快照逻辑,因而可能会导致无法生成或测试源代码配置。

    另外,我将Visual SourceSafe与TFVC各自特有的功能总结罗列如下:

    Visual SourceSafe

    TFVC

    共享

    工作区

    固定

    变更集

    存档与还原

    搁置集

    销毁

    Team Foundation工作项

    关键字扩展

    签入策略

     

    签入说明

     

    通过设置警报来执行电子邮件通知


    总结

    Team Foundation的到来表明了微软Visual Studio产品组开始重视和支持团队(尤其是大型的团队)协作开发,TFVC的作用正是配合Team Foundation解决大规模协同开发中版本控制及源代码管理可能碰到的障碍和瓶颈,使得开发团队的规模不再受限于所使用的管理软件,同时可以更好地解决过去的项目开发管理中存在的一些难题。对于现在的软件开发来说,管理是非常重要的,难以想象一个管理混乱的开发团队能够制造出精品,借由微软推出的这套开发管理系统,有助于广大开发团队大幅度提高自身管理能力,保证软件的开发质量,有效降低产品的开发风险。如果再继续培养和加强刻苦追求卓越的精神,我相信中国的软件开发团队一样也能够做出令世界为之惊叹的作品!
  • 相关阅读:
    python基础(三)python数据类型
    python基础(二)条件判断、循环、格式化输出
    postman测试上传文件
    postman添加权限验证
    postman添加cookie
    postman发送json格式的post请求
    postman发送post请求
    如果json中的key需要首字母大写怎么解决?
    fastjson转jackson
    git初识
  • 原文地址:https://www.cnblogs.com/Autumoon/p/958920.html
Copyright © 2011-2022 走看看