近项目使用cvs管理,研究了一段时间,参考了几个文档,总结如下
CVS完全手册
==========================================================================
He Wehzhu, kerlion@netease.com, created at 2003-11-5
updated at 2003-11-12
版权声明:可以任意转载,转载时请务必标明原始出处和作者信息
==========================================================================
内容
概述
CVS环境设置
登录CVS服务器:
cvs命令格式
CVS的日常使用
其他常用命令
CVS宏/keyword
CVS分支管理
CVS服务器的安装和配置
Watchers
WinCVS的安装和配置
CVSWEB的安装
概述
==================================
CVS是一个并行版本控制系统,它采用C/S模式,它的复杂度和功能性属于中等,是当今流行的版本控制系统。它有两个基本的特点:
*保存修改记录:保存了所有文件的修改历史,并可以建立分支
*协作与并行:cvs不推荐使用lock-modify-unlock的串行的工作模式,而采用多人可以并行地修改同一个文件,而在提交时merge conflict;它更适合于大型的工作团体。
使用CVS的好处:
*文件集中管理,大家都可以方便的看到所有人员的新文件,规范化了文件的管理
*可以查看以前任何的一个版本或修改历史
*可以同时维护多个版本和分支
CVS环境设置
==================================
先不要管CVS服务器的配置,我们先假设已经有一台配置好的服务器,要访问CVS,必需先设置环境变量CVSROOT
CVSROOT=:pserver:user@server#port:/path/to/cvsroot
*pserver是访问方式,口令认证的意思,这是常用的方式,其他还有gserver,kserver,ext
*user是CVS服务器的用户名,
*server是CVS服务器的名称或者IP地址
*/path/to/cvsroot是你的CVS服务器的CVSROOT目录,根据你的CVS服务器设置做修改或者询问管理员
你可以把设置放到你的shell的profile里(.bash_profile,.profile等)这样不用每次敲一长串命令了
高级功能:现在比较流行是使用ssh来加密口令和数据流
CVSROOT=:ext:user@server#port:/path/to/cvsroot
CVS_RSH=ssh
hints:
实际上没有CVSROOT也可以,你可以每次用cvs -d :pserver:user@server#port:/path/to/cvsroot来访问,而且它将忽略CVSROOT环境变量,也许你会笑我只有疯子才这么用,不过,cvs可以把每次使用的命令参数放到一个文件中,所以在~/.cvsrc中加入
cvs -d :pserver:user@server#port:/path/to/cvsroot
即可,它大的好处是修改了立刻生效,而且它的优先级高于CVSROOT环境变量,到时候不要傻乎乎地来问我,我的环境变量真么不起作用了。
登录CVS服务器:
==================================
$cvs login,这时候cvs会问你口令,请把你在CVS服务器上的口令敲进去
如果没有任何错误信息,恭喜你,成功了!
成功登录后将建立一个~/.cvspass文件,保存你的口令,以后不用输入口令了.
cvs命令格式
==================================
cvs [global_opts] command [command_opts] [command_args]
Global options 属于左边cvs的,是全局的
command_opts 属于左边command的,是局部的
cvs --help-commands查看命令列表
cvs -H command/cvs -help command 查看该命令的选项
hints:如果你每次使用一些命令都带同样的参数的话,可以把它们放到~/.cvsrc文件中去
update -c
diff -c
add -kb
cvs -Q
cvs global-option comand comand-option arguments
CVS的日常使用
==================================
CVS使用流程
a checkout 尽当本地没有working copy时使用
b staus 检查服务器上是否有新版本
c update 如果有,则用update同步文件
d 做你自己的修改,并保证正确
e update 看是否有人修改了你的文件
f 如果有冲突,合并冲突
g commit 提交你的修改,如果因为又有人提交修改而失败,回到e步
h 回到b步
1 cvs checkout module_name
-------------------------------------
module_name可以暂时理解为目录名,它会在本地但前目录下建立module_name目录,在把服务器上说有module_name目录下的文件copy到本地module_name目录下。
注意:第一次checkout后,不是通过cvs checkout来同步文件了,而是要进入该目录下进行具体文件的版本同步(添加,修改,删除)操作。
2 cvs update filename
-------------------------------------
将文件同步到新的版本:不指定文件名,cvs将同步所有子目录下的文件。