Angelo Lee's Blog
This is my kingdom .If i don't fight for it ,who will ?

一 源码管理工具

 源码管理(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


posted on 2011-08-17 19:13  Angelo Lee  阅读(546)  评论(0编辑  收藏  举报