技术开发 频道

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

    一些术语

    大多数VCS都有下面一些共同的概念,不过名字可能会稍有不同。

    基本概念

    * Repository (repo): 储存文件的数据库。

    * Server: 储存repo的计算机。

    * Client: 连接repo的计算机。

    * Working Set/Working Copy: 当你编辑文件时,编辑对象所在的本地文件目录。

    * Trunk/Main: repo中储存代码文件的主位置。你可以把代码想像成一棵家族树,“trunk”就是主线的那条树干。

    基本操作

    * Add: 将一个文件第一次加入repo,也就是开始用VCS追踪这个文件。

    * Revision: 文件的版本编号(即v1, v2, v3等等)。

    * Head: repo中保存的文件最新版本。

    * Check out:从repo中下载一个文件。

    * Check in: 上传文件进入repo(如果文件发生了变化)。这个文件将得到一个新的版本编号,用户将可以“check out”这个文件。

    * Checkin Message: 描述所做修改的短说明。

    * Changelog/History: 一个记录文件自从创建开始所有变动的清单。

    * Update/Sync: 将你本地的文件同repo中最新版本进行同步的过程。这将使得本地文件始终能够跟上最新的变动。

    * Revert: 放弃对文件所做的编辑,从repo中重新获得未编辑前的版本。

    高级操作

    * Branch: 在repo中对一个文件或文件目录,创建一个独立的拷贝。Branch在这里既是动词(branch the code),又是名词(Which branch is it in?)。

    * Diff/Change/Delta: 找出两个文件之间的差别。对于比较不同版本之间的变动很有用。

    * Merge (or patch): 将一个文件上的改动,应用于另一个文件,使得两者保持相同。比如,你可以将一个branch中的功能merge到另一个branch中。

    * Conflict: 当你check in的时候,你所做的变动可能与其他用户发生冲突。(这时双方的编辑都不会生效。)

    * Resolve: 修改互相冲突的变动,check in正确的版本。

    * Locking: 取得一个文件的“控制权”,使得在你解锁之前,其他人不能编辑这个文件。有些VCS用这个功能避免conflict。

    * Breaking the lock: 强制解锁一个文件,使得你可以对其进行编辑。比如,某人lock了一个文件,但是他又去度假了。

    * Check out for edit: Check out到一个文件“可编辑”的版本。有些VCS默认允许编辑,另一些要求明确发出命令后,才提供可编辑的版本。

    一次典型的使用过程是这样的:

    爱丽丝add一个文件(list.txt)进入repo。然后,她又把这个文件check out,做了一次编辑(在文件中加入milk这个单词)。接着,她将修改后的文件check in,并附有一条checking message(“加入了新的条目”)。第二天早上,鲍勃update了他本地的working set,看到了list.txt的最新修订版,其中包含了单词“milk”。如果他使用changelog或diff,都可以发现前一天爱丽丝加入“milk”这个词。

0
相关文章