FreeBSD-CVS代码管理简介
【FreeBSD教程】假如进行软件开发,一个重要的问题是治理软件的代码。程序员经常改动代码,以至于在代码复杂的情况下,自己都无法把握改动的情况。这种情况在多人合作合法程序时,更为严重。因此,人们开发了版本控制工具来进行代码治理, cvs就是其中之一,FreeBSD系统本身的开发就是使用cvs进行代码治理的,系统也缺省支持cvs。
使用 cvs治理代码,可以记录下每一次对代码的修改,假如需要,程序员可以获得任一个版本的代码,发现正确或错误的改动。虽然cvs保留了每次修改的历史,但是它保留的只是代码的改动部分,而不是每次改动后的完整代码,因此不至于浪费过多的空间,这样也比较有利于多人合作的情况,cvs可以很轻易的比较每个人的改动,判定这些改动是否冲突,因而决定是否将这些改动合并。
首先,使用 cvs需要首先定义一个代码仓库,这需要通过一个环境变量CVSROOT来定义。
$ CVSROOT=/home/wb/.cvsroot; export CVSROOT
$ mkdir .cvsroot
$ chmod o-rw .cvsroot
为了以后每次都能正常执行 cvs系统,CVSROOT的设置值应该放在.profile等文件中,使每次使用都有效。然后,使用cvs init初始化代码仓库,cvs在CVSROOT定义的目录下建立所需要的子目录和文件。
$ cvs init
代码仓库初始化之后, cvs就可以正常使用了。此时就需要向代码仓库提交相应的项目,通常需要切换到程序代码所在的目录,执行以下命令。
$ cvs import -m “ my project import ” myproject mytag releasetag
代码治理系统对每次代码更改都要求一个注释,以便需要的时候查询,能清楚的获得代码之外的有关信息,利于生成 ChangeLog、History之类的历史记录。提交项目是项目的开始,当然最为重要。注释以跟随-m之后,假如没有使用-m,cvs会启动编辑器,让使用者输入更多的注释信息。
上面的指令就将当前目录中的代码,提交到 CVS代码仓库中。此后,即使删除这个原始代码目录中的内容,也不必担心代码丢失。
为了正常工作,需要建立一个用于编程的工作目录,例如 /home/wb/program/,在这个目录中,可以将cvs代码库中的内容提取出来,这将按照项目的名字在这个目录下,建立子目录。
$ cd ~/program
$ cvs checkout myproject
cvs checkout: Updating myproject
$ ls -l
drwxr-xr-x 3 wb wheel 512 Jan 2 03:20 myproject
这个 myproject子目录就包括以前提交项目的时候,代码目录中的文件。然后,就可以在这个目录中执行日常的编程工作了。
一旦在工作中,对代码进行了改动,就需要向代码仓库提交改动的代码文件了,这需要通过 cvs add来提交。
$ cvs add main.c
$ cvs add thelib.c
提交之后,需要使用 cvs commit将代码真正放入代码仓库,每次改动之后,同样也要执行这个操作。
$ cvs commit – m “ update main.c and thelib.c ”
假如本地的文件不再是最新版本,或者本地文件不再存在,那么可以通过 cvs update从代码仓库中获得最新的代码,而cvs checkout则可以建立一个完整的代码子目录。
上面提到的 cvs代码治理方式只是最简单的单人工作模式,事实上cvs能够适应多人合作。cvs可以通过建立代码分支,并支持分支之间的合并,提供多人的合作,包括FreeBSD系统开发在内的很多种闻名软件的代码治理,都是使用cvs进行的。