0

Linux CVS命令

Posted in CVS at 三月 17th, 2010 / No Comments »

Linux CVS命令2008-11-17 13:07一、安装及初步设置

1、Setup CVS2、建立及初始化CVS工作目录#mkdir /src#msdir /src/cvslib#cvs -d /src/cvslib init //初始化cvs工作目录,可以看到出现CVSROOT目录,表示初始化成功。3、建立系统用户,包括管理员组和普通用户组两种权限。
#groupadd (CVSAdmin) //建立管理员组
#groupadd (CVSUser) //建立普通用户组
#useradd -g (CVSUser) -M (CVSUser_Sys1)
//不用添加Home目录(-M)而直接添加拥有访问CVS权力的系统用户CVSUser_Sys1,属于CVSUser组
#passwd CVSUser1
//设定CVSUser_Sys1的系统登陆密码(应该可以对真正的CVS用户透明)4、设定各组系统用户权限,作为CVS不同类型用户的代表
#chgrp -R (CVSUser) /src/cvslib //?添加新的工程是否直接在此处修改权限?
#chmod -R u=rx,g=rx /src/cvslib //设定组用户权限此外:<1>CVS用户(组)必须对/src/cvslib目录有执行权(列表权)和写权利,可以没有读权利;#chmod u=wx,g=wx /src/cvslib (o-other不改变)<2>CVS用户(组)必须拥有对/src/cvslib/CVSROOT目录及其中所有文件的读权限(r)和列表权限(x);#chmod u=rx,g=rx /src/cvslib/CVSROOT (o-other不改变)<3>CVS用户(组)必须拥有对/src/cvslib/CVSROOT目录下history文件的写权限;#chmod u+w,g+w /src/cvslib/CVSROOT/history (o-other不改变)<4>CVS用户(组)如果希望拥有操作(checkout等)某个项目(CVS中称为模块)代码等资料的权利,必须拥有对该目录及其子目录的rwx权限。否则在操作时,一旦遇到没有该用户权限的文件或目录,则操作中断。#chmod -R u+rwx,g+rwx (/project)5、配置CVS口令服务器
<1>在CVS服务器的/etc/services文件中添加新服务端口:(目前的Linux都已经预先设定好) cvspserver 2401/tcp

<2>在/etc/xinetd.conf/目录中添加一个新文件,名称随意,内容为: service cvspserver
{
flags = REUSE
socket_type = stream
wait = no user = root //?如何设置多个用户? //必须为root么?(必须为root,不能用其它用户名)
server = /usr/bin/cvs //cvs的安装目录
server_args = -f –allow-root=/src/cvs pserver //cvs文件的保存目录, 且–allow-root中间的横线不能分开
disable = no
log_on_failure += USERID
}
如果用的是 inetd 的系统,在 /etc/inetd.conf 里加入:
cvsserver stream tcp nowait root /usr/bin/cvs cvs -f –allow-root=/home/cvsroot pserver
<3>改变CVSROOT目录下的config文件访问属性,使其可被用户修改。去掉 /src/cvslib/CVSROOT/config中的 #SystemAuth = no注释符号#,使其有效,必须在passwd中存在用户名称和密码的才可以登陆,而不用系统为该用户提供的密码校验。即虽然用户名和系统的一样,但是登陆的密码是用htpasswd时定义的密码。

<4>重新起动CVS口令服务器
#/etc/rc.d/init.d/xinetd restart

<5>检查CVSServer服务是否已经启动
#netstat -l |grep cvspserver
应该有如下结果:
tcp 0 0 *:cvspserver *:* LISTEN6、创建用于外部访问CVS服务器的用户利用Linux的加密命令对CVS外部访问用户的密码进行加密
<1> 创建/src/cvslib/CVSROOT/passwd (注意必须名字为passwd,不能用其它文件名称) //用于保存用户名、加密后的密码及该用户具有那个系统用户的权限的文件

<2> #htpasswd -c /src/cvslib/CVSROOT/(passwd) (CVSUser_connect1)
//输入密码后,passwd格式为[用户名:加密后的密码明文] [cvstest:vORwxVRU8zDvw]
//需要修改为[用户名:加密后的密码明文:系统用户]的格式 [cvstest:vORwxVRU8zDvw:CVSUser_Sys1]
//这样就建立了外部访问用户
1.登陆cvs: cvs -d :pserver:xuquanxing@ip:/home/cvsroot login

Note:pserver是访问方式,如果服务器设置的是口令认证,则是 pserver。 username是 CVS服务器的用户名,可以根据你的设置修改; the_server_name是CVS服务器的名称或者IP地址; /home/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员.

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

2. 提交项目–import cvs import [-options] repository vendortag releasetag… Note: 该命令将当前目录下的所有文件(包括子目录)导入源代码储存库。 repository :项目名称,在CVS服务器上会创建以这个名字命名的仓库。 vendortag : 项目分支的总标记。(不常用) releasetag :标识文件的输入层次的标记。 (一般用start) 使用import提交项目的时候,CVS会要求对项目进行说明。在默认状态下,CVS会弹出文本编辑器。用户也可以用-m “log_message”来输入

说明信息。

例如 $cvs import -m “upload the first time as new module” judecvs v_0_0_1 start

提示:import 一般在第一次导入module时使用。后期修改文件后可直接使用commit命令提交修改的文件。

3. 从CVS导出项目–checkout cvs checkout [options] modules… 此命令将源代码储存库中已有的项目导出到当前目录。 modules :项目名称例如,从仓库中检索出judecvs项目的源文件. $cvs checkout judecvs

4.CVS 主要命令—update 更新当前工作目录中的文件 cvs update [-options] [files...] 此命令比较指定CVS源码库中的文件和当前目录下的文件,如果CVS源码库中有更高版本的源文件,则更新当前目录下的文件。此命令只有在

checkout命令使用过后才能使用。 在执行update命令时,CVS并不是简单的将新版本覆盖当前文件,而是试图将新版本所做的修改添加到当前文件中去。如果发生冲突,CVS会

以字符串 “<<<<<<”和“>>>>>>”来表示冲突发生。这时候你可以修改文件,重新提交。提示:如果你已经做过一次checkout了,那么不需要重新checkout,只需要进入cvstest项目的目录,更新一把就行了: 例如: $cd judecvs $cvs update

5.CVS 主要命令—status 如果你不想直接更新,只是想看看有没有更新的东西,那么: $cvs status 会给每个文件有一份状态报告,类似这样: ================================================== File: client.c Status: Up-to-date Working revision: 1.1.1.1 ‘Some Date’ Repository revision: 1.2 /home2/cvsroot/judecvs/client.c,v

这里最重要的就是 Status 栏,这里总共可能有四种状态: Up-to-date:表明你要到的文件是最新的. Locally Modified:表明你曾经修改过该文件,但还没有提交,你的版本比仓库里的新. Needing Patch:表明有人已经修改过该文件并且已经提交了!你的版本比仓库里的旧. Needs Merge:表明你曾经修改国该文件,但是别人也修改了这个文件,而且还提交给仓库了!

6.CVS 主要命令—commit 保存修改到CVS中 cvs commit [-lnR] [-m 'log_message' | -f file] [-r revision] [files...] 此命令将当前目录下的源代码与CVS中最新版本比较,并进行更新。 [-m ‘log_message‘ ] :输入修改说明。 [-r revision] :指定版本。 [files...] :指定修改文件。

$cvs commit -m “add XXX function” client.c

系统会提示 CVS: ———————————————————————- CVS: Enter Log. Lines beginning with `CVS:’ are removed automatically CVS: CVS: Committing in . CVS: CVS: Modified Files: CVS: client.c CVS: ———————————————————————-

退出后,系统询问是否continue,输入c,则完成checkin Log message unchanged or not specified a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs Action: (continue) c Checking in client.c; /home2/cvsroot/judecvs/client.c,v <– client.c new revision: 1.2; previous revision: 1.1 done

如果CVS上文件已经有其他人更新,也就是我当前工作的不是最新版本,系统提示commit失败,这时候需要先update,然后把整合文件再 commit. cvs server: Up-to-date check failed for `client.c’ cvs [server aborted]: correct above errors first! cvs commit: saving log message in /tmp/cvsCEjA9N

提示:修改文件之前先update或者先查看文件状态,确认当前工作版本是最新版本。

7.添加文件到项目中—add cvs add [-k kflag] [-m 'message'] files… 此命令并不真正添加文件,只是将文件注册到项目中,要真正添加文件,还要使用commit命令。例如: $cvs add -m “test add” testadd.c

提示: cvs server: scheduling file `testadd.c’ for addition on branch `v_0_0_2′ cvs server: use ‘cvs commit’ to add this file permanently

$cvs commit

同commit过程一样,CVS将testadd.c添加到项目中

8.CVS 主要命令—remove 从项目中删除文件 cvs remove [-k kflag] [-m 'message'] files… 和add命令一样,此命令并不真正删除文件,只是将文件从项目中取消,要真正删除文件,还要使用commit命令。 e.g. $rm testadd.c $cvs rm testadd.c 系统提示 cvs server: scheduling `testadd.c’ for removal cvs server: use ‘cvs commit’ to remove this file permanently

$cvs commit testadd.c

此时,CVS才将testadd.c从项目的最新版本中删除,但是如果它有以前的版本,以前版本依然存在。
cvs update的信息报告 “cvs update” 后在信息框里会列出你的操作,你的文件update的情况,这里是CVS使用的所有其它单字符信息性消息的列表: U [path] 在本地机更新get到了服务器上最新的或者最新版本的文件。 P [path] 像“U”一样,只是在update时你的网络带宽少的情况下CVS服务器所出现的提示。 M [path] 这意味着您已经修改过该文件了;而且,有可能资源库中新的更改已成功地合并到该文件。 C [path] 错误警报,”C” 字符表明该文件存在冲突,需要在使用 “commit” 提交前解决这冲突。 A [path] 该文件是计划要添加的,即添加了但尚未提交,这时你还使用update命令,CVS就会有这个提示,当你 “commit” 时,它被正式添加

到服务器库中,问题解决。 R [path] 象 “A” 一样,”R” 让您知道该文件计划要删除的,即删除了但尚未提交,这时你还使用update命令, CVS就会有这个提示,当你 ”

commit” 后,该文件就会从服务器库中删除,问题解决。
 

http://hi.baidu.com/niit0532/blog/item/d555b5dd2d54b9e876c638c9.html

Published in CVS
Tags:

No Responses to “Linux CVS命令”

Leave a Reply

请输入算式结果(看不清请点击图片)
(必须)