技术开发 频道

版本控制系统(VCS)入门插图教程

【IT168 技术文章】

    版本控制(Version Control)的作用是追踪文件的变化。为什么需要版本控制?简单说,就是当你出错了,可以很容易地回到没出错时的状态。

    你可能已经在不知不觉中,布置了自己的版本控制系统。比如,创建了类似下面这样的文件名:

    * KalidAzadResumeOct2006.doc

    * KalidAzadResumeMar2007.doc

    * instacalc-logo3.png

    * instacalc-logo4.png

    * logo-old.png

    这就是软件中为什么有"Save As"命令的原因。它使得你可以在不破坏源文件的基础上,得到一个类似的新文件。文件的多版本保存是一个常见问题,通常的解决办法是这样的:

    * 做一个文件备份(比如Document.old.txt)。

    * 在文件名中加入版本号或日期(比如Document_V1.txt,DocumentMarch2007.txt)。

    * 在多人编辑的环境下,共享一个文件目录,并且要求每个人编辑完以后,在文件上做出标识。

    什么是版本控制系统(VCS)?

    通过文件名识别版本,对于小型项目或者单个文件也许可行。但是对于软件开发来说,是不适用的。

    你能想像吗,要是Windows操作系统的源文件,是在一个叫做"Windows2007-Latest-UPDATED!!"的共享目录中开发的,并且每个程序员都可以编辑,都有一个自己的子目录,那会发生什么情况?那么,Windows就根本不可能被制造出来。

    大型的、频繁修改的、多人编写的软件项目,需要一个版本控制系统(简称VCS,行话叫做"文件数据库"),追踪文件的变化,避免出现混乱。一个好的VCS应该做到以下几点:

    * 备份(Backup)和恢复(Restore)。文件的每一次编辑都得到保存,可以恢复到任意一个日期。需要2007年2月23日的版本?没问题。

    * 同步(Synchronization)。让不同用户随时都能得到文件的最新版本。

    * 短期撤销(Short-term undo)。文件被你搞乱了,怎么办?那就撤销编辑,回到最近一次的无差错版本。

    * 长期撤销(Long-term undo)。有时候,你会过了很久才发现出错了。如果你想撤销一年前的一次编辑,怎么办?那就去取回一年之前的那个版本。

    * 追踪修改(Track Changes)。文件的每一次编辑,你都可以写下注解,解释编辑的原因。(这些信息储存在VCS中,而不是文件中。)这样就很容易看出,长期中文件变化的脉络和原因。

    * 追踪权限(Track Ownership)。VCS会记录每一次提交新版本的用户名。这样就容易追踪责任。

    * 试验功能(Sandboxing)。当你对文件做出重大变更时,你可以把编辑内容暂时性地保存在一个单独的区域,不断进行测试和除错。等到确认正确以后,再加入主版本。

    * 分支(Branching)和合并(merging)。分支功能可以看成是一个更大的测试版本。你将整个的代码做一份拷贝,然后再起一个独立的名字,追踪其变化,与原版本脱离关系,这就是分支。以后,你还可以将分支版本再并入源版本,这就是合并。

    虽然共享文件夹操作起来更快速和简单,但是它做不到上面这些功能。

0
相关文章