• 先谈谈版本控制的一些事

    软件开发已不是小手工作坊
    服务器君一共花费 17.846 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    如果你严肃对待编程,就必定会使用“版本控制系统”(Version Control System)。

    随着信息科技的发展,软件开发已不是小手工作坊,软件的规模与复杂度已经不再适合一个人单打独斗地开发了,团队协作变得相当重要。如果没有VCS,团队开发就会变得乱七八糟。

    原始的版本控制

    版本控制是什么不用多说了,它就是记录我们对文件、目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作。

    最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本。有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几个版本过去后,很可能就是下面的样子了:

    本地版本控制

    手工管理比较麻烦且混乱,所以出现了本地版本控制系统,记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件。比如RCS。

    集中版本控制

    但是本地版本控制系统偏向于个人使用,或者多个使用的人必须要使用相同的设备,如果需要多人协作就不好办了,于是,集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )应运而生,比如Subversion,Perforce。

    在CVCS中,所有的版本数据都保存在服务器上,一起工作的人从服务器上同步更新或上传自己的修改。

    但是,所有的版本数据都存在服务器上,用户的本地设备就只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。

    而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

    分布式版本控制

    针对CVCS的以上缺点,出现了分布式版本控制系统( Distributed Version Control System,简称 DVCS ),如GIT,Mercurial。

    DVCS不是复制指定版本的快照,而是把所有的版本信息仓库全部同步到本地,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,所以,只要有一个用户的设备没有问题就可以恢复所有的数据。

    当然,这增加了本地存储空间的占用。

    Git是什么

    Git是一种近来很流行的分布式版本控制系统(或称源代码管理系统),和传统的SVN、TFVC(TFS Version Control)这样的系统而言,最大的特点就是分布式。所谓分布式是相对于SVN这种集中式而言的,SVN或者TFVC都需要有一个中心服务器保存着源代码,所有开发者都使用客户端和这个服务器交互。

    Git是Linux内核之父为了管理繁杂的Linux内核而开发的开源系统,随着GitHub这样的开源代码托管系统大热,而为很多人知晓使用。

    Git的强大潜力并非真正在于分布式,而是在于其对源代码存储的机制(使用快照),由于这样的机制存在,你可以大量频繁的使用分支来工作,通过分支来隔离功能开发的过程。如果要在TFVC中频繁建立分支是不可想象的。比如我的一个以前的解决方案文件夹大约600M,如果频繁使用分支,那么一方面我的磁盘会出现大量重复的文件占用大量的磁盘空间,另外一方面在VS的历史打开记录中会有很多名称一样的解决方案,你还需要去辨别其所在路径从而确定是否打开了正确的分支代码。

    关于版本控制,就谈到这。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [数据库技术] MySQL中英文混合排序 4 个条目
  2. [数据结构] 图的定义 1 个条目
  3. [移动开发] Android 开发调试工具 ADB 3 个条目
  4. [移动开发] Android根基概念Context 8 个条目
  5. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  6. [Python程序设计] Django数据库模型 6 个条目
  7. [Python程序设计] urls.py设置技巧 8 个条目
  8. [智力开发与知识管理] 超越整体性学习 5 个条目
  9. [移动开发] ListView 使用相关问题集 1 个条目
  10. [PHP程序设计] 声明式编程范式 12 个条目
  11. [计算机算法] 两数交换的各种算法细节 2 个条目
  12. [PHP程序设计] PHP与函数式编程 1 个条目
窗口 -- [博客]