一台可以安装你的工作目录的机器上运行 cvs,它被称为客户机(client),然后告诉它你将连到一台安装有仓库的机器,它被称为服务器(server)。通常,使用远程仓库除了仓库名称格式不同,其它方面与本地机没什么区别:
method:][[ user][: password]@] hostname[:[ port]]/path/to/repository
如:
CVSROOT=:pserver:[email protected]:/cvsroot/projects
不推荐直接采用密码的形式,而用
cvs login 命令来代替。
pserver含义:
为了通过口令验证服务器远程在仓库上运行 cvs命令,需要指定 pserver
协议。
下面两种方法同等
cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
或
CVSROOT=:pserver:[email protected]: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 能够查看以自己的用户名登录在服务器上的目录。
标签:仓库,CVS,cvs,命令,print,commit,checkout From: https://blog.51cto.com/u_16174476/6616995