??xml version="1.0" encoding="utf-8" standalone="yes"?>老司机色在线视频,国产人成一区二区三区影院,精品视频免费观看http://www.aygfsteel.com/wanjune/category/7328.html一个程序员的记事本zh-cnThu, 01 Mar 2007 11:13:16 GMTThu, 01 Mar 2007 11:13:16 GMT60CVS服务器设|指?http://www.aygfsteel.com/wanjune/archive/2006/02/17/31206.html7?/dc:creator>7?/author>Fri, 17 Feb 2006 07:40:00 GMThttp://www.aygfsteel.com/wanjune/archive/2006/02/17/31206.htmlhttp://www.aygfsteel.com/wanjune/comments/31206.htmlhttp://www.aygfsteel.com/wanjune/archive/2006/02/17/31206.html#Feedback0http://www.aygfsteel.com/wanjune/comments/commentRss/31206.htmlhttp://www.aygfsteel.com/wanjune/services/trackbacks/31206.html ~程开?hspace=10 

整理的这文章大部分内容是我在Red Hat Linux 8.0?.0上验证过的,希望对你有帮助?服务器的安装略过不提Q因为安装了开发工L话默认就已经有了CVS。就没有,更新软g包就可以搞定Q除非你一定要安装最新版本?1Q?首先创徏用于CVS的组和用?

      #groupadd 
      cvs
      #useradd 
      cvsroot -g cvs
      #passwd 
      cvsroot

OKQ用户已l徏立好了,cvsroot是我们做CVS操作使用的?/P>

2Q?修改配置文g:

      #more 
      /etc/services | grep cvspserver

看看是否?

      cvspserver 
      2401/tcp #CVS client/server operations
      cvspserver 
      2401/udp #CVS client/server operations

q?行。系l自带了CVSӞq?行也已经有了Q只需要确认一下。如果没有,误己加上去。然后必d建启动脚?

      #vi 
      /etc/xinet.d/cvspserver

内容如下:

      service 
      cvspserver
      {
      disable 
      = no
      flags 
      = REUSE
      socket_type 
      = stream
      wait 
      = no
      user 
      = root
      server 
      = /usr/bin/cvs
      server_args 
      = -f --allow-root=/home/cvsroot pserver
      log_on_success 
      += USERID
      log_on_failure 
      += USERID
      }

其中server指定CVS可执行文件\径,默认安装是/usr/bin/cvs。server_args指定源代码库路径及认证方式等Q例子中把源代码存放在cvsroot的主目录中,也可以另外指定\径,但必L意权限设|,pserver是密码认证方式,q种方式的安全性要差一些,但操作v来比较简单。请注意每行{号左右都有一个空|否则无法启动服务?/P>

3Q?初始化CVS

切换到cvsroot用户Q然后进行初始化:

      #cvs 
      -d /home/cvsroot init

q个路径应该与cvspserver文g中指定的路径相同Q初始化后会在此路径下面创徏CVSROOT目录Q存攄于CVS理的一些文件。此旉新启动xinetd服务QCVS服务器应该能够启动了?

      #service 
      xinetd restart

当然Q重新启动计机也可以。确认是否启?

      #netstat 
      -l | grep cvspserver

如果能看?

      tcp 
      0 0 *::cvspserver *::* LISTEN

说明已经正常启动Q没有的话请重新查配|过E是否有错误或者遗漏。最后还必须查防火墙的设|,?401端口打开?/P>

4Q?用户理

CVS默认使用pȝ用户dQؓ了系l安全性的考虑也可以用独立的用户理。CVS用户名和密码保存在CVSROOT目录下的passwd文g中,格式?

      用户?:密码::pȝ用户

也就是说Q它把CVS用户映射到系l用Pq样我们可以通过pȝ用户的权限设|来分配l用户不同的权限Q而不需要让用户知道pȝ用户名和密码?passwd文g默认q不存在Q我们必自己创建。文件中的密码字D用MD5加密Q不q的是CVS没有提供d用户名的命oQ所以我们借用Apache的命令来完成q项工作:

      #htpasswd 
      passwd username

q个命o为username指定密码Qƈ保存在passwd中,文g不存在时会自动创建。htpasswd命o不是为CVS而设Q因此L一些遗憾,它不能自动添加映到的用户名Q不q没关系Q我们设|好密码后,自己把这部分加上。我的做法是映射到cvsroot用户Q如果需要映其他的用户Q请注意l相应的目录讄好权限,否则CVS用户可能无法讉K源代码仓库。要d防止使用pȝ帐号登陆Q可以编辑CVSROOT目录下的config文gQ把:

      #SystemAuth=no

q一行前面的#LQCVS׃会验证系l用户了Q否则当用户名不在passwd文g中时QCVS会进行系l用L验证。此外还必须配置d权限Q用CVSROOT目录下的readers和writers文gq行q个工作。这2个文仉认也是没有的Q没关系Q自己创建就可以了。readers文g记录拥有只读权限的用户名Q每行一个用Pwriters文g记录拥有d权限的用户名Q也是每行一个用戗注意, readers文g比writers优先Q也是说出现在readers中的用户会是只ȝQ不writers文g中是否存在该用户。配|完毕,先测试一?

      #cvs 
      -d ?:pserver::username@127.0.0.1::/home/cvsroot?login

q里假设用户名是usernameQ本机登陆。出现密码提C,输入正确的密码后Q登陆成功。如果提C问被拒绝Q请查用h限、目录权限以及防火墙讄。徏议设|环境变量CVSROOT:

      #export 
      CVSROOT=::pserver::username@127.0.0.1::/home/cvsroot

以后׃需要输?d参数了,?d参数会覆盖这个环境变量的讄?/P>

5Q?源代码仓库的备䆾和移?/P>

基本上,CVS的源代码仓库没有什么特别之处,完全可以用文件备份的方式q行备䆾。需要注意的只是Q应该确认备份的q程中没有用h交修改,具体的做法可以是停止CVS服务器或者用锁{等。恢复时只需要把q些文g按原来的目录l构存放好,因ؓCVS的每一个模块都是单独的一个目录,与其他模块和目录没有M瓜葛Q相当方ѝ甚臛_需要在仓库中删除一个目录或者文Ӟ便可以删除该模块的一些内容,不过q不q么做,使用CVS的删除功能将会有一个历史记录,而对仓库的直接删除不留Q何痕q,q对目理是不利的。移动仓库与备䆾怼Q只需要把该模块的目录Ud到新的\径,便可以用了。如果不q在备䆾之后有过一些修改ƈ且执行了提交Q当服务器出现问题需要恢复源代码仓库Ӟ开发者提交新的修改就会出现版本不一致的错误。此时只需要把 CVS相关的目录和文g删除Q即可把新的修改提交?/P>

6Q?更进一步的理

CVSROOT目录下还有很多其他功能,其中最重要的就是modules文g。这个文件定义了源代码库的模块,下面是一个例?

      Linux    
      Linux
      Kernel   
      Linux/kernel

q个文g的内Ҏ行排列,每一行定义一个模块,首先是模块名Q然后是模块路径Q这是相对于CVS根目录的路径。它定义了两个模块,W一个是Linux模块Q它位于Linux目录中,W二个是Kernel模块Q这是Linux模块的子模块?modules文gq必须的,它的作用相当于一个烦引,部分CVS客户端Y仉过它可以快速找到相应的模块Q比如WinCVS?/P>

7Q?协同开发的问题

默认方式下,CVS允许多个用户~辑同一个文Ӟq对一个协作良好的团队来说不会有什么问题,因ؓ多个开发者同时修改同一个文件的同一部分是不正常的,q在目理中就应该避免Q出现这U情况说明项目组内部没有l一意见。而多个开发者修Ҏ件的不同部分QCVS可以很好的管理。如果觉得这U方式难以控ӞCVS也提供了解决办法Q可以用cvs admin -lq行锁定Q这样一个开发者正在做修改时CVS׃会允许其他用户checkout。这里顺便说明一下文件格式的问题Q对于文本格式,CVS可以q行历史记录比较、版本合q等工作Q而二q制文g不支持这个操作,比如word文档、图片等应该以二进制方式提交。对于二q制方式Q由于无法进行合qӞ在无法保证只有一个用户修Ҏ件的情况下,使用加锁方式q行修改。必L意的是,修改完毕记得解锁。从1.6版本开始,CVS引入了监视的概念Q这个功能可以让用户随时了解当前谁在修改文gQƈ且CVS可以自动发送邮件给每一个监视的用户告知最新的更新?/P>

8Q?建立多个源代码仓?/P>

如果需要管理多个开发组Q而这些开发组之间不能互相讉KQ可以有2个办?:

aQ共用一个端口,需要修改cvspserver文gQ给server_args指定多个源代码\径,卛_个—allow-root参数。由于xinetd?server_args长度有限Ӟ可以在cvspserver文g中把服务器的讄重定向到另外一个文Ӟ?

      server 
      = /home/cvsroot/cvs.run

然后创徏/home/cvsroot/cvs.run文gQ该文g必须可执行,内容格式?

      #!/bin/bash
      /usr/bin/cvs 
      -f 
      --allow-root=/home/cvsroot/src1 
      --allow-root=/home/cvsroot/src2 
      pserver

注意此时源代码仓库不再是/home/cvsrootQ进行初始化的时候要分别对这两个仓库路径q行初始化,而不再对/home/cvsroot路径q行初始化?/P>

bQ?采用不同的端口提供服?/P>

重复W?步和W?步,Z同的源代码仓库创Z同服务名的启动脚本,qؓq些服务名指定不同的端口Q初始化时也必须分别q行初始化?



]]>
վ֩ģ壺 | | | | Ԫ| ޻| ƽ| | | | | ʯ| ɽ| ǰ| Ӷ| ɽ| Ӫ| ԭ| | Ӷ| | ϰ| | | ˳| | | г| ·| | ɽ| | | | | | | ĵ| Ӧ| ½| ո|