一些术语
大多数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”这个词。