CVS初步

来源:互联网 发布:大数据分析的算法 编辑:程序博客网 时间:2024/05/29 08:34
      对于任何一个项目,版本管理的重要性不必多说。而实验室好像没人搞版本管理,不知道是大家大家代码写的少还是有什么更好的管理方式。记得之前作项目写的代码全部保存在本地,改了若干次,到最后自己都不知道那个代码可用,结果每次演示的时候都要忙活半天,去找一个代码run起来。后来知道居然有版本控制这个好东东。如果用这个来管理项目的代码和文档,每次需要时,只要从服务器上checkout需要的版本就ok了。所以一直想在实验室的服务器上整一个cvs代码库。为了搭建环境,本文主要介绍一下如何设置服务器,以及访问权限问题。
      建立一个供多人远程访问的cvs代码库一般需要两个步骤:第一步就是用cvs -d /usr/local/cvsroot init命令初在服务器上初始化一个代码cvs库;第二步就是为远程用户访问服务器上该代码库的进行相应的设置。
      第一步比较简单,需要注意的是cvsroot目录SGID位设置(使用chmod g+srwx),该设置可以保证该目录下创建的所有文件与其属于一个组,这样作可以避免以后权限带来的访问问题。
      第二步,为了使服务器上的cvs代码库可以被远程用户访问,通常采用ssh和pserver两种认证方式。当用户在服务器上已经拥有帐号时可以使用ssh方式访问服务器上的cvs代码库,该方式采用加密传输,安全性能好。如果用户在服务器上没有帐号时,我们可以使用pserver方式进行身份认证,但该方法的缺点是安全性差。启用pserver方式需要配置inet或者xinet服务,并设置CVSROOT / {passwd, readers, writers}三个文件。xinet的典型配置如下:

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

      编辑passwd,readers,writers文件。其中passwd文件的格式如下:
[username]:[crypt_password]:[mapping_system_user]
      passwd每一条记录有三个参数,分别是pserver登录用的帐号名(username),pserver登录用的密码(该处是已经经Unix 标准的 crypt() 函数加密的密码(crypt_password)),还有登录用户登录后对应的现有系统中某一帐户名(mapping_system_user),这一项主要是限制pserver登录后的用户在系统中的拥有的权限。

     anonymous:
bach:ULtgRLXo7NRxs
spwang:1sOp854gDF3DY
melissa:tGX1fS8sun6rY:pubcvs
qproj:XR4EZcEs0szik:pubcvs

上面是一个passwd的例子,其中第一项省略了crypt_passwordmapping_system_user部分。如果省略
crypt_password表示无须密码认证,如果省略mapping_system_user表示系统已存在username用户。
      对于cvs库所在服务器没有帐户的客户,我们可以首先建立一个对cvs库具有访问权限的系统用户,然后在passwd中为每个用户设置帐户名和密码,并将其映射到之前建立的那个系统用户上。最后,通过readers和writers文件控制这些用户对cvs库的读写权限。
      
参考:
[1]http://www.chedong.com/tech/cvs_card.html
[2]CVS中文手册-Password authentication server部分
[3]《CVS精髓》O'REILLY 东南大学出版社
原创粉丝点击