cvs应用篇

第一部分 
1 登录
加入环境变量:
echo "export CVSROOT=:pserver:user@server:/path">>~/.bashrc
. .bashrc
注:pserver是服务器验证方式,也可以用别的方式验证,取决于服务器。
user 登录的用户名
server 服务器
/path 服务器仓库路径
也可以不设置环境变量,在登录的时候用-d选项指定。
登录:
如果设置了环境变量,即可用以下方式登录:
cvs login
若没有设置变量,则用以下方式登录:

cvs -d ":pserver:user@server:/path" login
输入密码没出错便是登录成功,提示符什么都没有变。

退出:
cvs logout
2得到一个工作副本
cvs checkout 档案名
3修改
3.1添加档案
3.1.1添加文件
在工作副本中创建要添加的文件,然后使用
cvs add filename
命令告诉CVS你希望对该文件进行版本控制,最后使用
cvs commit filename
真正把该文件提交到仓库中。
会弹出一个文本文件让你写注释,若不想弹出,在命令中加-m "comment"直接添加注释。

3.1.2添加目录
在副本中创建目录
mkdir dir
存入档案:
cvs add dir
3.2删除档案
3.2.1删除文件
rm filename
cvs remove filename
cvs commit filename

3.2.2删除目录
在CVS中删除目录就是删除该目录下的所有文件,,所以下一次checkout的时候仍会有该目录的存在,若不想该目录存在副本中,在checkout的时候加上-P选项,注意该选项会删除所有的空目录。
进入该目录并删除目录下所有的文件
cvs remove 刚刚删除的所有文件
cvs commit
cvs update –P
  要真正删除目录,可用cvs release –d 目录名,就可将整个目录从cvs中删除。
3.3重命名档案
3.3.1重命名文件
mv old new
cvs remove old
cvs add new
cvs commit old new
3.3.2重命名目录
mkdir new
cvs add new
mv old/* new/
cd old && cvs remove 刚刚移走的所有文件

cd new && cvs add --------
cd .. && cvs commit
cvs update -P
可以看出删除,移动,重命名的操作是麻烦的,所以在最初建立目录结构的时候一定要谨慎。
 
3.4添加二进制文件
要注意的是提交二进制文件要加选项 -kb
cvs add -kb 文件名

cvs commit 文件名
如果未加-kb 选项,可以用cvs admin 命令来恢复:
cvs admin -kb 文件名
cvs update -A 文件名
cvs commit 文件名
4 查询状态和解决分歧
提交文件之前,最好查看一下文件的当前状态,以避免和他人发生冲突:
cvs status -v 档案名
常见状态:
Up-to-date : 最新版
Locally Modified : 已修改,还未提交改变
Needs Patch : 需更新
Needs Merge : 另有人向仓库提交了新版本,而你也作了修改
Needs Checkout : 另有人向仓库提交了新版本。
当发现工作副本和库存版本不一致时(若出现需更新和需合并的状况,则需要查看副本和服务器文件的差异
) ,可以用下面的命令查看差异之处:
cvs diff
cvs diff -c
或库存版本和自己的修改有冲突,可以用查询记录的命令看看是和谁发生了冲突:
cvs log
找到和自己相冲突的人员协商解决。
  建议:每天上班前查看下文件的状况,cvs –qn update, 当发现有文件U 说明有文件比当前版本新,当M时说明本地的文件有修改,这时提交若发现C,则说明有冲突,要进行融合。 
5 提交和清除副本
5.1 提交修改
在对文件作了一些修改之后,需要提交到服务器,用以下的命令可以完成提交:
cvs commit 档案名
写注释不是必须的,但多人开发的时候最好写上注释,而且要注意注释的质量,cvs commit会弹出一个
文件让你写注释,如果不想弹出文件,可以加-m选项直接写上注释,如:
cvs commit -m "comment" 档案名
5.2 清除副本
当你完成这个程序并要转到其它任务之前,你需要删除这个副本,这是一个好习惯,因为当你再要用 这个程序的时候,你不是需要以前这个版本,而是要到服务器上去checkout新的版本。下面这个命令可以 帮你清楚副本:
cvs release -d 档案名
当然你也可以直接用rm命令删除副本,但推荐使用上面的命令,因为它可以帮你检查文件的变动。
第二部分高级选项
6.取出过去的档案
6.1按时间取出
cvs -q update -D "2006-xx-xx xx:xx:xx GMT"
注意:在按时间取档案的时候最好先用cvs log 档案名 查看要取什么时候的档案,因为在CVS内部使用的 是GMT时间,而计算机上多使用本地时间。两者相差很大。取出过去的档案并不能修改它,若要修改就必须开

辟分支。
恢复:
cvs -q update -A
6.2按标记取出
6.2.1 标记
标记是当软件开发到一定阶段后人为的为它打上的标记,以作为将来维护的基点。加 标记的方法如下:
cvs -q tag 标记名称
6.2.2 按标记取出:
cvs checkout -r 标记名
cvs -q update -r 标记名
恢复方法同上。
7.其它选项
7.1 更新工作版本
或许别人更改了一些程序,此时应更新一下自己的工作副本:
cvs update
cvs update -d
7.2 锁定与解锁文件
该选项是希望在自己修改文件的同时不让别人修改,用了此选项之后一定要记得在完成工作之后使用解
锁命令,否则别人将不能修改此文件。
cvs admin -l file
cvs admin -u file
7.3 监视文件
由于锁定文件之后别人不能checkout,可能会降低工作效率,CVS的跟踪文件可以更好的完成锁定文件的功能,使用cvs watch on命令跟踪一个仓库或文件,那么这个里面的文件就checkout的时候就是只读状态,要编辑他就得先用cvs edit命令,这样别人就能用cvs watchers命令查看有多少人在修改这个文件。
8.分支
当软件正式发行后,你也继续在开发这个软件,准备过一段时间再推出新版本,但发行版本经过一段时
间的使用发现了某些BUG,可当前的版本处于不稳定状态,不能基于最新的代码去修改发行版本的错误,这时就需要从发行版文件创建一个分支来修改这个错误,修改之后,可以选择将其合并到主干。
8.1 创建分支
8.1.1 基于当前工作副本创建分支
cvs tag -b tag_branch(分支版本号)
8.1.2 基于旧版本创建分支
cvs rtag -b -r tag_old tag_branch 档案名
也可使用以下方法为旧版本创建分支:
依标记取出过去的一个版本:
cvs checkout -d dir -r tag_old 档案名
-d 表示新建一个目录,取出的档案会放在这个目录中。
进入这个目录 ,创建分支:
cvs tag -b tag_branch
8.2 访问分支
支是在CVS仓库中创建的,创建分支不会自动把当前的副本切换到分支上,有两种方法访问分支:
更新当前工作副本,使其成为分支:
cvs -q update -r tag_branch
重新按标记检出:
cvs checkout -r tag_branch 档案名
回到主干:
cvs -q update -A
8.3 合并分支
8.3.1合并整个分支
进入主干目录:
cvs -q update -j tag_branch
cvs -q commit
8.3.2一个分支多次合并
假如有一个分支开发到1.2.2.2的时候你合并了一次,但你对分支又进行了开发,到1.2.2.4的时候又
想进行一次合并,这时你按第一次合并可以会出现一些问题,你可以指定只合并从1.2.2.2到 1.2.2.4
的变化:

cvs -q update -j 1.2.2.2 -j tag_branch
合并的时候可以会发生冲突,你应该在提交新版本之前解决它。
9.标签
具体使用方法与分支类似。
10.发行软件
由于在checkout的时候CVS会为每个目录加上一个CVS目录,但软件正式发行的时候是不需要这个目录的,可以用以下命令得到一份干净的软件发行版本:
cvs -q export -r 标记名 -d dir 档案名称  
cvs帮助说明
 除了本文档系统地介绍cvs的使用,此外用好cvs的官方文档也是一个极好的帮助说明,下面述说怎么使用cvs的官方帮助文档。
 
 开始时,man cvs cvs –help , cvs help都可得到提示,
1) cvs help cvs –help-commands将得到cvs的命令列表;
2) cvs –help-options 将得到cvs 的一些公共参数说明;
3)  使用cvs [commands] –help将得到cvs一些具体命令的使用方法和参数说明。
 
CVS global options
[wuqifu@soasen ~]$ cvs --help-options
CVS global options (specified before the command name) are:
    -H           Displays usage information for command.
    -Q           Cause CVS to be really quiet.
    -q           Cause CVS to be somewhat quiet.
    -r           Make checked-out files read-only.
    -w           Make checked-out files read-write (default).
    -n          Do not execute anything that will change the disk.
    -t           Show trace of program execution -- try with -n.
    -v           CVS version and copyright.
    -T tmpdir    Use 'tmpdir' for temporary files.
    -e editor    Use 'editor' for editing log information.
    -d CVS_root Overrides $CVSROOT as the root of the CVS tree.
    -f           Do not use the ~/.cvsrc file.
    -z #         Use compression level '#' for net traffic.
    -x           Encrypt all net traffic.
    -a           Authenticate all net traffic.
    -s VAR=VAL   Set CVS user variable.
(Specify the --help option for a list of other help options)
 

你可能感兴趣的:(cvs应用篇)