• [SCM]源码管理 简介


    一 源码管理工具

     源码管理(SCM/Source Code Management),也称为版本控制系统(VCS/Version Control System)。

    1)为什么我们需要SCM/VCS

    1. 备份和恢复:源码是软件公司的财富,备份和恢复用来防止意外的损失;

    2. 同步:同一项目中多程序员间实现代码的共享和同步;

    3. 短期的撤销:通常的如果某个开发人员的提交导致了break,则可以撤销导致break的提交;

    4. 长期的撤销:如果某个BUG是很久以前的提交导致,则可以撤销到当时提交的版本来debug;

    5. 跟踪改变:每次改变的提交都有注释,改变的历史会被保存,我们还可以看到提交的时间,作者等信息;

    6. 沙盒(sandbox):开发人员一般在提交前都要确保build通过和功能运行正常,本地工作副本相当于沙盒确保提交的源码工作正常;

    7. 分支和合并(branch and merge):在软件的模块开发中,分支用来实现模块的独立开发,在模块开发完成后在合并到一起;

    2)锁类型或合并类型,Lock/Merge, 源码管理工具,按照是否允许多人同时修改一个文件,分为Merge和lock;lock类型,如果有一个开发人员checkout文件,则其他的开发人员 不能checkout;Merge类型,允许多人同时checkout同一个文件,然后在提交时Merge。由于Merge相比Lock更灵活更有助于多 个开发人员间的协作,所以现在基本上所有的源码管理工具都是Merge类型,还有的同时支持Merge和Lock。

    3)集中式和分布式,Server+Client(Centralized)/ Distributed(decentralized), 传统的源码管理都是集中式的,所有的开发人员本地只有一个副本,必须提交到集中的同一个server repository后才能实现与其他的开发人员的共享;最近新兴的分布式的源码管理,开发人员在本地不仅有工作副本,还有自己的Repository, 每个开发人员本地的Repository都可以当做server,这样可以通过开发人员本地的repository更好的实现在提交前开发人员间的共享。
     

    4)基本概念

    源码仓库(Repository )(repo)  : 存储文件的数据库;
    服务器(Server):存储repo的计算机;
    工作副本(Working Set/Working Copy):开发人员的本地副本,开发人员从服务器的代码仓库(Server Repository)获得此副本,然后修改和提交; 
     

    二 集中式源码管理

    1)常用集中式源码管理工具

    software|free or not|client/sever or Distributed|merge or lock|platform| website

    CVS | GPL/Free | client/server | Merge | all platform | http://www.nongnu.org/cvs/

    SVN | Apache/BSD/Free | client/server | Merge or lock | all platform | http://subversion.tigris.org 

    Perforce | Commercial | cient/server  | Merge or lock | all platform | http://perforce.com

    Team Foundation Server | commercial | client/server | Merge or lock | windows | http://microsoft.com


    2)特点

    集中式源码工具(Centerlized,Server/Client),开发人员本地只有一个工作副本(working copying),每次提交(commit)都提交到所有开发人员公用的唯一的源码仓库(Server Repository),开人人员通过唯一的源码仓库(Server Repository)来共享代码。

    3)基本概念

    Check out :获得最新的工作副本,且记录此时的版本为将要修改的工作副本的base;

    Commit :将对本地副本的修改提交到服务器的代码仓库;

    4)基本过程

     

     

    三 分布式源码管理工具 

    1)常见的分布式的源码管理工具
    software|free or not|client/sever or Distributed|merge or lock|platform| website

    Bazaar | GPL/Free | Distributed | Merge|all platform | http://wiki.bazaar.canonical.com/

    Git | GPL/Free | Distributed | Merge | all platform | http://git-scm.com

    Mercurial | GPL/Free | Distributed | Merge | all platform|http://mercurial.selenic.com/

    2)特点

    分布式的源码管理工具,开发人员本地不仅有工作副本,而且还有自己的代码仓库。这样任何两个开发人员都可以通过本地自己的代码仓库的pull操作来 实现提交到真正的服务器代码仓库前的代码共享。 开发人员在提交到真正的服务器代码仓库前可以有自己的多个版本;开发人员可以脱机工作,等有网络时再pull到真正的服务器的代码仓库;commit操作 更快;

    3)基本概念

    Update: 将本地的代码仓库的最新反映到本地的工作副本;

    Commit :此时的提交仅仅是提交到开发本地的代码仓库;

    push  : 将本地代码仓库提交到远程的另一个代码仓库;

    pull  : 将远程的另一个代码仓库同步到本地代码仓库;

    4) 基本过程


    参考:
    A Visual Guide to Version Control :http://betterexplained.com/articles/a-visual-guide-to-version-control/
    Intro to Distributed Version Control (Illustrated) :http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

    comparison: http://versioncontrolblog.com/comparison/CVS/Git/Mercurial/Subversion/Visual%20SourceSafe/index.html


    作者:Angelo Lee
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    覆盖方法和重载方法 C++快速入门19
    访问控制 C++快速入门18
    继承机制中的构造器和析构器 C++快速入门17
    PEInfo编程思路讲解03 工具篇03|解密系列
    静态属性和静态方法 C++快速入门21
    PEInfo编程思路讲解03 工具篇03|解密系列
    继承机制中的构造器和析构器 C++快速入门17
    覆盖方法和重载方法 C++快速入门19
    linux系统中chmod命令
    linux系统中文件、目录的权限
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887999.html
Copyright © 2020-2023  润新知