当前位置:操作系统 > Unix/Linux >>

CVS速成班

结合文档和一些网上资源,折腾了半天终于搞定了CVS,我写一点非常简单的"速成"

  的教材.希望对大家有用.

  下面是我的步骤和做法.

  1,要求:

  root

  权限;

  CVS软件,请找到相关的rpm,tgz,deb

  等包装上,或者到

  http://www.cvshome.org/CVS/Dev/code

  下载原程序编译安装,这里我不准备介绍它的安装,请参考CVS自身的文档安装.

  我使用Slackware的tgz包,安装的命令是

  #installpkg

  cvs*.tgz

  其他包请参考对应包管理工具的命令.

  一定的系统资源,要有一定内存(32M就能工作得很好),要一定的磁盘空间,看

  你的项目的大小和多少而定.

  2,架设CVS服务器:

  建立CVSROOT目录,因为这里涉及到用户对CVSROOT里的文件读写的权限问题,

  所以比较简单的方法是建立一个组,然后再建立一个属于该组的帐户,而且以后有

  读写权限的用户都要属于该组.假设我们建一个组cvs,用户名cvsroot.建组和用

  户的命令如下

  #groupadd

  cvs

  #adduser

  cvsroot

  生成的用户家目录在/home/cvsroot(根据自己的系统调整)

  用cvsroot用户登陆,修改

  /home/cvsroot

  (CVSROOT)的权限,赋与同组人有读写

  的权限:

  $chmod

  771

  .

  (或者770应该也可以)

  注意:这一部分工作是按照文档说明做的,是否一定需要这样没有试验,我

  会在做试验后在以后版本的教程说得仔细一点.如果您有这方面的经验请提

  供给我,谢谢.

  建立CVS仓库,(仍然是cvsroot用户),用下面命令:

  $cvs

  -d

  /home/cvsroot

  init

  以root身份登陆,修改/etc/inetd.conf

  和

  /etc/services,分别加入下面一行:

  在

  /etc/inetd.conf

  里加入:

  cvsserver

  stream

  tcp

  nowait

  root

  /usr/bin/cvs

  cvs

  --allow-root=/home/cvsroot

  pserver

  说明:上面的行是单独一整行,/usr/bin/cvs

  应该是你的cvs版本的命令路径,

  请根据自己的系统调整./home/cvsroot

  是你建立的CVSROOT的路径,也请

  根据上面建立目录的部分的内容做调整.

  在/etc/services里加入:

  cvsserver

  2401/tcp

  说明:cvsserver是任意的名称,但是不能和已有的服务重名,也要和上面修

  改/etc/inetd.conf那行的第一项一致.这里我用的是CVS的口令认证方式,

  CVS还有其他认证方式,我没有做试验,如果您有经验,请补充,谢谢.

  添加可以使用CVS服务的用户到cvs组:

  以root身份修改/etc/group,把需要使用CVS的用户名加到cvs组里,比如我想

  让用户laser和gumpwu能够使用CVS服务,那么修改以后的/etc/group应该有下

  面这样一行:

  cvs:x:105:laser,gumpwu

  在你的系统上GID可能不是105,没有关系.主要是要把laser和gumpwu用逗号

  分隔开写在最后一个冒号后面.当然,象RedHat等分发版有类似linuxconf这样

  的工具的话,用工具做这件事会更简单些.

  重起inetd使修改生效:

  #killall

  -HUP

  inetd

  这样服务器就设置完成了.我们接着搞客户端.

  3,设置客户端,如果是Linux(或者其他*nix),客户端和服务器端的软件是一样的,如果是

  Win,MAC等平台,请到http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel

  找相应的客户端软件,

  这里我先说一下在Linux(*nix)里怎么做:

  设置环境变量CVSROOT:

  $export

  CVSROOT=:pserver:laser@the_server_name:

  /home/cvsroot

  注意:这里的pserver是访问方式,我在上面设置的是口令认证,所以这里是

  pserver,如果你的CVS服务器设置成别的访问模式,那么需要相应修改.

  laser是可以使用

  CVS服务器的用户名,这里可以根据你的设置修改,我在这

  个版本设置的是直接使用系统用户的口令文件,也就是说laser必须是CVS服

  务器上的合法用户,这里当然有安全问题,CVS可以设置成为拥有自己的用户,

  我将在以后的版本里面增加这些内容,或者您也可以提供一些补充,或者直接

  读CVS的文档.the_server_name是CVS服务器的名称或者IP地址,根据你的情

  况填写,/home/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务

  器设置做修改或者询问管理员.你可以把这行放到你的shell的profile里

  (.bash_profile,.profile等)这样就不用每次敲一长串命令了.

  登陆CVS服务器:

  $cvs

  login,这时候cvs会问你口令,请把你在CVS服务器上的口令敲进去,这里

  是laser在CVS服务器上的系统用户的口令:

  Passwd:xxxxxxxx

  成功登陆后将在你的家目录建立一个.cvspass文件,以后就不用输入口令了.

  好,客户端设置完成,简单吧.

  现在服务器和客户端都设置好了,那么怎么用呢,我在这里写一个最简单的(估计也是最常用

  的)命令介绍:

  首先,建立一个新的CVS项目,一般我们都已经有一些项目文件了,这样我们可以用下面步骤

  生成一个新的CVS项目:

  进入到你的已有项目的目录,比如叫cvstest:

  $cd

  cvstest

  运行命令:

  $cvs

  import

  -m

  "this

  is

  a

  cvstest

  project"

  cvstest

  v_0_0_1

  start

  说明:import

  是cvs的命令之一,表示向cvs仓库输入项目文件.

  -m参数后面的字串是描述文本,随便写些有意义的东西,如果不加

  -m

  参

  数,那么cvs会自动运行一个编辑器(一般是vi,但是可以通过修改环境变量

  EDITOR来改成你喜欢用的编辑器.)让你输入信息,

  cvstest

  是项目名称(实际上是仓库名,在CVS服务器上会存储在以这个名字

  命名的仓库里.)

  v_0_0_1是这个分支的总标记.没啥用(或曰不常用.)

  start

  是每次

  import

  标识文件的输入层次的标记,没啥用.

  这样我们就建立了一个CVS仓库了,然后,我们可以把这个测试项目的文件删除.试验一下如何

  从仓库获取文件.这里我假设上面的所有客户端工作你都已经做过了.

  运行下面的命令:

  $cvs

  checkout

  cvstest

  从仓库中检索出cvstest项目的源文件.

  如果你已经做过一次checkout了,那么不需要重新checkout,只需要进入cvstest项目的目录,更新

  一把就行了:

  $cd

  cvstest

  $cvs

  update

  一下即可.又或者你不想直接更新,只是想看看有没有更新的东西,那么:

  $cvs

  status

  这时后会打印出一长串状态报告(你可能需要用类似less这样的命令分页显示,或者定向到一个输

  出文件里慢慢看.),对项目中的每个文件有一份状态报告,类似这样:

  ================================================

  File:

  foo.c

  Status:

  Up-to-date

  Working

  revision:

  1.1.1.1

  'Some

  Date'

  Repository

  revision:

  1.2

  /home/cvsroot/cvstest/foo.c,v

  Sticky

  Tag:

  (none)

  Sticky

  Date:

  (none)

  Sticky

  Options:

  (none)

  这里最重要的就是

  Status

  栏,这里总共可能有四种状态:

  Up-to-date:表明你要到的文件是最新的.

  Locally

  Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新.
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,