posts - 297,  comments - 15,  trackbacks - 0
CVS的常 用命令速查 手册
本文出自:http://www.linuxforum.net 作者:车东 chedong@bigfoot.com

CVS环境初始 化:CVS环 境的搭建
CVS的 日常使用:日常开发中最常用的CVS命令
CVS的分支开发:项目按照不同进度和目标并发进行
CVS的用户认证:通过SSH的远程用户认证,安全,简单
CVSWEB:CVS的WEB 访问界面大大提高比较代码修改的效率
CVS TAG:将$Id$加入代码注释中,方便开发过程的跟踪

CVS环境初始化
===========

环境设置:
tcsh
setenv CVSROOT /path/to/cvsroot
bash
CVSROOT=/path/to/cvsroot ; export CVSROOT

初始化:
cvs init

项目首次导入
cvs import -m "write some comments here" project_name vender_tag r_tag

项目导出:将代码从CVS库里导出
cvs checkout project_name

CVS的日常使用
=============

确 认修改:确认自己的修改并写入到CVS库里
cvs commit -m "write some comments here" file_name

注 意:CVS的 很多动作都是通过cvs commit进行最后确认并修改的,在确认的前,还需
要用户填写修改注释,以帮助其他开发人员了解修改的原因。如果不用写-m "comments"
而直接确认`cvs commit file_name` 的话,cvs会自动调用系统缺省的文字编辑器(一
般是 vi)要求你写入注释。
注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容:以方便其
他开发人员能够很好的理解
不好的注释,很难让其他的开发人员快速的理解:比如: -m "bug fixed" 甚至 -m ""
好的注释,甚至可以用中 文: -m "在用户注册过程中加入了Email地址校验"

同步最近修改:开始工作前和将自己的工作导入到CVS库里前都要 做一次:先同步 后修改
cvs update -m "write some comments here" file_name

注 意:不要使用项目首次导出后,以后就要用cvs update在导出的项目目录下进行同步了,
而不是每次重新cvs checkout来同步文件了。如果导出后修改了文件,然后再次从导出的
项目目录的上一级cvs checkout proj等于是删除了proj目录然后重新导出,上次导出后
的修改就全丢了。

修改某个版本注释:每次 只确认一个文件到CVS库 里是一个很好的习惯,但难免有时候忘
了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某
个文件某个版本 的注释:
cvs admin -m 1.3:"write some comments here" file_name

删除文件:文件删除后,比 如:rm file_name
cvs rm file_name
cvs ci -m "write some comments here"

注意:很多cvs命令都有缩写形式:commit=>ci update=>up checkout=>co remove=>rm

添加文件 文件添加后,比如:touch new_file
cvs add new_file
cvs ci -m "write some comments here"

添加目录:
cvs add dir_name

查看修改历史:cvs log file_name
cvs history file_name

查 看当前文件不同版本的区别
cvs diff -r1.3 -r1.5 file_name
查看当前文件(可能已经修改了)和库中相应 文件的区别
cvs diff file_name

更方便的定位文件修改和比较版本区别的办法请看后面的cvsweb使用

正确的通过CVS恢复旧版本的方法:
如果用cvs update -r1.2 file.name
这 个命令是给 file.name加一个STICK TAG: "1.2" ,虽然你的本意只是想将它恢复
到1.2版本
正确的恢复版本的方法是:cvs update -p -r1.2 file_name >file_name
如果不小心已经加成STICK TAG的话:用cvs update -A 解决

删除,移动目录:
最方便的方法是直接移动,删除CVSROOT里相应目录:CVS所有项目都 是按目录独立的:
好比一颗树,其实砍下任意一枝都能独立存活,对目录修改后,要求其开发人员
cvs checkout project_name 或者 cvs update -dP同步

CVS Branch:多分支同步开发
=========================

确认版本里程碑:多个文件各自版本号不一样,项目到一定阶段,可以给所有文件统一
指定一个阶段里程碑版本号,方便以后按照 这个阶段里程碑版本号导出项目,同时也是
项目的多个分支开发的基础。
cvs tag release_1_0

在 开发proj的2.0版本的时候发现1.0有问题,但2.0又不敢用,则从release_1_0标记出
一个分支 release_1_0_patch
cvs rtag -b -r release_1_0 release_1_0_patch proj

一些人先在另外一个目录下导出这个分支:解决1.0中的紧急问题,而其他人员2.0仍旧
在项目的主干上开发
cvs checkout -r release_1_0_patch

在release_1_0_patch上修正错误后,标记一个1.0的 错误修正版本号
cvs tag release_1_0_patch_1

如果2.0认为这些错误修改在2.0里也需要,就在 2.0的开发目录下合并
release_1_0_patch_1中的修改到当前代码中:
cvs update -j release_1_0_patch_1

CVS的远程认证:通过SSH远程访问CVS
================================

使用cvs本身的远程认证很麻烦,需要定义服务器和用户名密码等,而且不安全,因此
和系统本地帐号结合并通过SSH进行认证 是比较好的办法,通过在profile里设置一
下内容:
CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH
所有用户都可以获得CVS服务器的

如果CVS所在服务器 的SSH端口不在缺省的22,或者和客户端与服务器端SSH缺省端口
不一致,则创建一个ssh_cvs脚本,有时候设置了:
:ext:$USER@test.server.address#port:/path/to/cvsroot 仍然不行,比如有以下错误信息:
ssh: 133.133.33.33#3333: Name or service not known
cvs [checkout aborted]: end of file from server (consult above messages if any)

解决的方法是做一个标本指定端口转向(不能使用alias,会出找不到文件错误):
more ssh_cvs
#!/usr/bin/sh
ssh -p 34567 $*
然后:chmod +x /usr/bin/ssh_cvs
CVS_RSH=ssh_cvs; export CVS_RSH

CVSWEB:提高程序员比较文件的效率
===============================

CVSWEB 就是CVS的 WEB界面,可以大大提高程序员定位修改的效率:
使用的样例可以看:http://www.freebsd.org/cgi /cvsweb.cgi

CVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,这个是我觉
得 安装设置比较方便的:
http://www.spaghetti-code.de/software/linux/cvsweb/

tar zxf cvsweb.tgz
修改:cvsweb.cgi
$config = $ENV{'CVSWEB_CONFIG'} || 'cvsweb.conf';

修改:cvsweb.conf
%CVSROOT = (
'Development' => '/path/to/cvsroot',
);
"hideattic" => "1",

CVSWEB 可不能随便开放给所有用户,因此需要使用WEB用户认证:
先生成 passwd:
/path/to/apache/bin/htpasswd -c cvsweb.passwd user

修改httpd.conf: 增加
<Directory "/path/to/apache/cgi-bin/cvsweb/">
AuthName "CVS Authorization"
AuthType Basic
AuthUserFile /path/to/cvsweb.passwd
require valid-user
</Directory>

CVS TAGS: 最后是谁,什么时间修改了文件
=====================================

将$Id$ 加在程序文件开头的注释里是一个很好的习惯,cvs能够自动更新其中的内容成:
file_name version time user_name 的格式,比如:
cvs_card.txt,v 1.1 2002/04/05 04:24:12 chedong Exp,可以这些信息了解文件的
最后修改人和修改时间

几个常用的缺省文件:
default.php
<?php
/*
* Copyright (c) 2002 Company Name.
* $Id$
*/

?>

Default.java: 注意文件头一般注释用 /* 开始 JAVADOC注释用 /** 开始的区别
/*
* Copyright (c) 2002 Company Name.
* $Id$
*/

package com.netease;

import java.io;

/**
* comments here
*/
public class Default {
/**
*
* @param
* @return
*/
public toString() {

}
}

default.pl:
# Copyright (c) 2002 Company Name.
# $Id$

# file comments here

#!/usr/bin/perl -w
use strict;



相关资源:

CVS HOME:
http://www.cvshome.org

CVS FAQ:
http://www.loria.fr/~molli/cvs-index.html

相关网站:
http://directory.google.com/Top/Computers/Software/
Configuration_Management/Tools/Concurrent_Versions_System/

CVS 免费书:
http://cvsbook.red-bean.com/
CVS 速查卡片:
http://www.refcards.com/about/cvs.html
posted on 2010-06-08 16:57 chatler 阅读(577) 评论(0)  编辑 收藏 引用 所属分类: cvs

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(10)

随笔分类(307)

随笔档案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感觉这个博客还是不错,虽然做的东西和我不大相关,觉得看看还是有好处的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新评论

阅读排行榜

评论排行榜