CVS命令
export CVSROOT=:pserver:username@192.168.1.100:/var/cvsroot
cvs login CVSROOT
cvs checkout module_name //check out module
cvs update module_name //更新整个module
cvs update module_name //更新整个module
cvs update [-r 1.1] module_name/filename //更新某一版本的文件
cvs commit -m "no message" filename //提交文件
cvs remove filename1 filename2 //删除文件,删除完后需要再运行提交命令
cvs commit -m "no message" filename //提交文件
cvs remove filename1 filename2 //删除文件,删除完后需要再运行提交命令
cvs add filename
cvs passwd -a -r username
cvs passwd -a -r username
cvs -d :pserver:username@192.168.1.66:/cvsroot login
命令 描述
admin 执行对源代码库的多种管理功能
checkout 用来自源代码的文件创建(或更新)工作目录
diff 显示工作目录和源代码库之间的区别或源代码库中不同版本的差别
export 创建源代码文件的一个拷贝,但是不更新源代码
history 显示了对源代码库中文件或目录所执行的CVS命令的历史信息
rdiff 创建一个补丁文件,包含了源代码库中两个版本的文件之间的差别
release 取消一次cvs checkout操作以及对工作目录所做的任何改动
status 显示源代码库中文件的当前状态
CVS选项和参数
选项/参数 描述
-d cvsroot 使用cvsroot而不是$CVSROOT作为源代码库的根目录
-e editor 使用editor编辑日志信息
-f 不使用~/.cvsrc文件
-H 显示cvs用法信息
-l 关闭历史日志
-n 不执行任何修改磁盘的命令
-q 取消一些CVS输出
-Q 取消大多数CVS输出
-r 让检出的文件只读(默认情况为可读写)
-s var=val 设置CVS用户变量var的值为val
-T tmpdir 使用tmpdir目录保存临时文件
-v CVS版本和版权
选项/参数 描述
-d cvsroot 使用cvsroot而不是$CVSROOT作为源代码库的根目录
-e editor 使用editor编辑日志信息
-f 不使用~/.cvsrc文件
-H 显示cvs用法信息
-l 关闭历史日志
-n 不执行任何修改磁盘的命令
-q 取消一些CVS输出
-Q 取消大多数CVS输出
-r 让检出的文件只读(默认情况为可读写)
-s var=val 设置CVS用户变量var的值为val
-T tmpdir 使用tmpdir目录保存临时文件
-v CVS版本和版权
详解
一台可以安装你的工作目录的机器上运行
cvs,它被称为客户机(
client),然后告诉它你将连到一台安装有仓库的机器,它被称为服务器(
server)。通常,使用远程仓库除了仓库名称格式不同,其它方面与本地机没什么区别:
[:
method:][[
user][:
password]@]
hostname[:[
port]]/path/to/repository
如:
CVSROOT=:pserver:zsun@192.168.2.4:/cvsroot/projects
不推荐直接采用密码的形式,而用
cvs login 命令来代替。
pserver含义:
为了通过口令验证服务器远程在仓库上运行 cvs命令,需要指定
pserver
协议。
下面两种方法同等
cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
或
CVSROOT=:pserver:bach@faun.example.org:2401/usr/local/cvsroot
cvs checkout someproj
CVS的命令格式是:
cvs [cvs的选项] cvs-command [command 选项]
如:
cvs commit
cvs -d /usr/local/cvsroot init
cvs update
cvs -H command (列出命令command的使用方法)
运行CVS不需要特殊的权限, 只是在多人时需要设定大家都有读写权.(见后)
注意:使用CVS管理源代码,对于代码的获得,更新,应通过CVS命令来完成.
在服务器端:
下面从一个项目开始.
一,开始项目
用CVS来管理原代码,首先要创建一个/"仓库/"(repository),/"仓库/"简单来说是
一个目录结构,它包括乐要管理的原代码和用于管理原代码的各种管理文件.
使用CVS命令init:
先设置环境变量CVSROOT,指向仓库的绝对路径,然后调用CVS的init命令
bash$ CVSROOT=/usr/local/cvsroot;export CVSROOT
bash$ cvs init
bash$ ls -l $CVSROOT
也可以用CVS参数-d path来覆盖$CVSROOT的值
bash$ cvs -d /usr/local/cvsroot init
许多CVS的命令允许用这种方式指定cvs的根目录.
二,添加文件,目录到仓库
我们要将需要管理的文件加入仓库,并命名
CVS命令import (此命令应只用一次, 以后用cvs add)
例如, 将当前目录下的src/*加入:
bash$ cvs import -m /"init implement/" myproject myvtag mtrtag
-m 指定log message
myproject : 仓库名
myvtag: vendor tag
myrtag: release tag
三,设置权限
源码管理员应对仓库下的文件和目录设置恰当的许可权限来控制访问.
所有的RCS文件(以,v结尾)是只读方式,仓库中的目录应当对使用者有写权,以便允许
其更改.
仓库设好后,就可以利用CVS的命令来管理.(包括对项目,对源代码)
一般的常用的命令:
cvs checkout
从仓库中得到某版本的代码.在本地产生一个copy
cvs update
从仓库中更新本地的代码
cvs commit
将本地修改后的代码提交仓库,并产生新版本.
cvs add
添加新的文件到仓库,在cvs commit命令后生效.
一般的流程是
cvs checkout or cvs update
用你喜欢的编辑器修改本地copy
cvs commit
提交修改.
详细介绍
CVS checkout 命令
从仓库提取指定的文件到当前目录,并建立同样的结构,并创建CVS目录
例
bash$ cvs checkout project
bash$ cvs checkout project/src/main
为使用便利,我们可以对一个目录建一个缩写,方法是修改$CVSROOT/CVSROOT/下的
modules文件.(当然是用cvs 命令完成)
cvs checkout CVSROOT/modules
cd CVSROOT
vi modules
我们在文件尾加上
src project/src
print project/src/print
cvs commit
以后我们就可以用cvs checkout print来代替
cvs checkout project/src/print
cvs checkout命令缺省是得到最新版本.我们也可以得到某一个老版本
cvs checkout -r 1.1 print
将print的1.1版的代码取出.
cvs checkout的详细用法见cvs -H checkout的输出.
CVS commit 命令
在对文件的修改完成后,用cvs commit提交到仓库.
cvs commit -m /"Update by xxxxx/" project
cvs commit -m /"Update main.c/" main.c
提交完成后,当前的版本号会更新,如原来为1.1,现为1.2. 这两个版本都在
仓库的主干(maintrunk)上.
-m选项可以记录有关提交的注释.如果没有指定-m选项,在环境变量CVSEDITOR
中指定的编辑器被调用(vi是缺省的),提示键入文本,修改记录注释.
CVS update
CVS允许多人同时对一个文件进行修改.
假设泥正在修改文件的一部分,现想合并更新自己的本地拷贝(checkout)和
另一个人所做的修改(已经放在仓库里),可用cvs update
cvs update
CVS tag , CVS rtag
创建分支可以使用户对一些文件进行修改而不会影响主干(当commit时).
创建分支首先为拟修改的某些文件创建一个标签(tag),标签是赋于一个文件或一组文件的符号.在源代码的生命周期里,组成一组模块的文件被赋于相同的标签.
创建标签:在工作目录里执行cvs tag
例: 为src创建标签:
cvs checkout src
cvs tag release-1-0
标签创建后, 就可以为其创建一个分支:
cvs rtag -b -r release-1-0 release-1-0-path print
-b :创建分支
-r release-1-0 :指定存在的标签
releas-1-0-patch:分支
print: 模块名
合并
使用cvs update -j 选项可以将分支上的改变与本地文件拷贝合并.
cvs update -j release-1-0 print.c
cvs release
对源文件作必要修改后, 可以用cvs release 删除本地工作拷贝
并通知其他开发者这个模块不再使用.
cvs release -d print
-d : 删除
print: 目录
冲突
由于CVS允许多人同时修改同一文件,冲突是不可避免的.例如当两人
同时修改同一文件的同一行时.
这时,如用cvs update 更新,CVS检测到冲突的存在,它会将冲突的代码
用/"<<<<<<<<<<<<<<</", /">>>>>>>>>>>>>>>/"标识.这时需手工处理这段代码.与引起
冲突的开发者协商,并对文件修改后即可用cvs commit提交.
CVS history 命令
cvs history 能够查看以自己的用户名登录在服务器上的目录。
声明:
此文章,“详解”部分来源于
“Fighting” 博客,请务必保留此出处http://fangfang0717.blog.51cto.com/236466/48727