近项目使用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将同步所有子目录下的文件。