FreeBSD-CVS代码管理简介

来源:岁月联盟 编辑:zhu 时间:2008-01-18
FreeBSD-CVS代码管理简介内容简介:【FreeBSD教程】假如进行软件开发,一个重要的问题是治理软件的代码。程序员经常改动代码,以至于在代码复杂的情况下,自己都无法把握改动的情况。这种情况在多人合作合法程序时,更为严重。因此,人们开发了版本控制

【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进行的。

图片内容