wwwlehu6.vip乐虎官网CVS常用命令速查手册

作者: 车东 chedong@bigfoot.com
关键词:CVS CVSWeb CVSTrac WinCVS CVSROOT

 

内容摘要:
CVS是1个C/S系统,多少个开拓职员通过一个主导版本调整系统来记录文件版本,从而达到保障文件同步的目标。工作格局如下:

CVS服务器(文件版本库)
/ | \
(版 本 同 步)
/ | \
开发者1 开发者2 开发者3

开垦人员入门能够重要选取2,陆看就足以了,CVS的管理人则更亟待懂的更加多1些,最终还简单介绍了壹部分Windows下的cvs客户端接纳,远程用户认证的取舍,及与BUG追踪系统等支付条件的集成问题。

CVS环境早先化:CVS环境的搭建 管理员
CVS的平日行使:经常花费中最常用的CVS命令, 开垦人士 管理员
CVS的分支开拓:项目比照差别速度和目的出现实行 管理员
CVS的用户认证:通过SSH的长距离用户认证,安全,轻便 管理员
CVSWEB:CVS的WEB访问分界面大大进步代码版本比较的频率 管理员
CVS TAG:将$Header$加入代码注释中,方便开采进度的追踪 开拓人士
CVS vs VSS: CVS和Virsual SourceSafe的可比 开辟人士 管理员
WinCVS: 通过SSH认证的WinCVS认证设置
基于CVSTrac的小组开垦条件搭建:通过CVSTrac完毕web分界面包车型客车CVS用户管理及集成的BUG追踪和WIKI交流。
1个种类十分之二的效用往往可以满足十分八的要求,CVS也不例外,以下是CVS最常用的功力,也许还不到它全体下令选项的2/10,越来越多的遵从在其实应用进程中体味,你想用多少就学多少,不时回头看看常常有意料之外的得到。

CVS环境开首化

条件设置:内定CVS库的门路CVSROOT
tcsh
setenv CVSROOT /path/to/cvsroot
bash
CVSROOT=/path/to/cvsroot ; export CVSROOT

背后还论及远程CVS服务器的装置:
CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsroot
CVS_RSH=ssh; export CVSROOT CVS_RSH

开头化:CVS版本库的起初化。
cvs init

三个品种的第2遍导入
cvs import -m “write some comments here” project_name vendor_tag
release_tag
实施后:会将全部源文件及目录导入到/path/to/cvsroot/project_name目录下
vender_tag: 开采商标识
release_tag: 版本发表标识

品种导出:将代码从CVSCurry导出
cvs checkout project_name
cvs
将创建project_name目录,并将流行版本的源代码导出到相应目录中。那些checkout和Virvual
SourceSafe中的check out不是2个定义,相对于Virvual SourceSafe的check
out是cvs update, check in是cvs commit。

CVS的常备行使

在意:第一回导出未来,就不是由此cvs
checkout来共同文件了,而是要跻身刚才cvs checkout
project_name导出的project_name目录下开始展览实际文件的本子同步(增添,修改,删除)操作。

将文件同步到新型的版本
cvs update
不制定文件名,cvs将同步全体子目录下的文书,也得以制定某些文件名/目录举行联合
cvs update file_name
最佳每一日起先工业作前或将团结的劳作导入到CVSCurry前都要做贰遍,并养成“先同步
后修改”的习惯,和Virvual
SourceSafe差别,CVS里不曾公文锁定的概念,全体的争执是在commit在此以前消除,尽管你改改进程中,有其余人修改并commit到了CVS库中,CVS会通告你文件抵触,并活动将顶牛部分用
>>>>>>
content on cvs server
<<<<<<
content in your file
>>>>>>
标识出来,由你确认争辨内容的挑选。
本子争执一般是在多个人修改2个文书造成的,但那序列型管理上的难题不应有一点都不小概率由CVS来缓解。

料定修改写入到CVSCurry
cvs commit -m “write some comments here” file_name

小心:CVS的不胜枚举动作都以通过cvs
commit实行最后承认并修改的,最棒每一遍只修改贰个文本。在料定的前,还供给用户填写修改注释,以接济任何开辟职员领悟修改的原故。借使不用写-m
“comments”而直白确定`cvs commit file_name`
的话,cvs会自动调用系统缺省的文字编辑器(1般是vi)须要您写入注释。
解说的身分很关键:所以不仅必须求写,而且必须写一些比较有意义的内容:以方便其余开拓职员能够很好的知情
不好的阐明,很难让任何的开垦人士连忙的知晓:比如: -m “bug fixed” 甚至
-m “”
好的笺注,甚至足以用中文: -m “在用户注册进程中加入了Email地址校验”

修改某些版本注释:每回只认可一个文书到CVSCurry是三个很好的习惯,但免不了有时候忘了内定文件名,把三个文件以同等注释commit到CVSCurry了,以下命令可以允许你改改有些文件有个别版本的注解:
cvs admin -m 1.3:”write some comments here” file_name

加上文件
始建好新文件后,比如:touch new_file
cvs add new_file
专注:对于图片,Word文档等非纯文本的种类,需求采用cvs add
-kb选项按二进制文件格局导入(k表示扩充选项,b表示binary),不然有希望出现文件被毁掉的图景
比如:
cvs add -kb new_file.gif
cvs add -kb readme.doc

下一场确认修改并注释
cvs ci -m “write some comments here”

删除文件
将某些源文件物理删除后,比如:rm file_name
cvs rm file_name
下一场确认修改并注释
cvs ci -m “write some comments here”
上述前边二步合并的方法为:
cvs rm -f file_name
cvs ci -m “why delete file”
专注:许多cvs命令都有缩写情势:commit=>ci; update=>up;
checkout=>co/get; remove=>rm;

累加目录
cvs add dir_name

翻看修改历史
cvs log file_name
cvs history file_name

查看当前文件区别版本的分别
cvs diff -r1.3 -r1.5 file_name
查阅当前文件(恐怕曾经修改了)和库中相应文件的分别
cvs diff file_name
cvs的web分界面提供了更有益于的定势文件修改和相比版本有别的措施,具体安装设置请看后边的cvsweb使用

毋庸置疑的经过CVS苏醒旧版本的格局:
如果用cvs update -r1.2 file.name
那个命令是给file.name加叁个STICK TAG: “一.二”
,即便您的本意只是想将它过来到一.二版本
是的的还原版本的措施是:cvs update -p -r一.贰 file_name >file_name
只要一点都不小心已经加成STICK TAG的话:用cvs update -A 化解

一抬手一动脚文件/文件重命名
cvs里不曾cvs move或cvs rename,因为那多个操作是足以由先cvs remove
old_file_name,然后cvs add new_file_name实现的。

剔除/移动目录
最便宜的方法是让管理员直接移动,删除CVSROOT里相应目录(因为CVS三个品类下的子目录都以独立的,移动到$CVSROOT目录下都足以看成新的独门项目:好比1颗树,其实砍下四意一枝都能独立存活),对目录进行了修改后,要求其开垦职员重新导出项目cvs
checkout project_name 或者用cvs update -dP同步。

花色揭穿导出不带CVS目录的源文件
做开垦的时候你也许注意到了,每一个开荒目录下,CVS都创立了2个CVS/目录。里面有文件用于记录当前目录和CVS库之间的照应信息。但项目揭发的时候你相似不希望把文件目录还带着含有CVS消息的CVS目录吧,这几个三回性的导出进程选用cvs
export命令,不过export只好针对二个TAG也许日期导出,比如:
cvs export -r release1 project_name
cvs export -D 20021023 project_name
cvs export -D now project_name

CVS Branch:项目多分支同步开采

确认版本里程碑:多个文本分别版本号不平等,项目到早晚等级,能够给具有文件统一钦点3个等第里程碑版本号,方便现在依据那些等第里程碑版本号导出档次,同时也是项指标四个支行开拓的底子。
cvs tag release_1_0

早先一个新的里程碑:
cvs commit -r 贰 标识全数文件起先进入2.x的费用

在意:CVS里的revsion和软件包的表露版本能够未有直接的涉及。但具有文件使用和布告版本同样的版本号比较有助于维护。

本子分支的建立
在付出项指标2.x本子的时候发现一.x不常常,但二.x又不敢用,则从从前标记的里程碑:release_1_0导出多个分支release_1_0_patch
cvs rtag -b -r release_1_0 release_1_0_patch proj_dir

一对人先在此外叁个索引下导出release_1_0_patch那些分支:消除壹.0中的火急难题,
cvs checkout -r release_1_0_patch
而别的名员如故在品种的中坚分支二.x上开垦

在release_1_0_patch上纠正错误后,标识3个1.0的失实勘误版本号
cvs tag release_1_0_patch_1

万壹贰.0认为那些不当修改在2.0里也急需,也足以在贰.0的支付目录下合并release_1_0_patch_第11中学的修改到近期代码中:
cvs update -j release_1_0_patch_1

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

行使cvs自个儿基于pserver的中远距离认证很辛勤,要求定义服务器和用户组,用户名,设置密码等,
科学普及的登入格式如下:
cvs -d :pserver:cvs_user_name@cvs.server.address:/path/to/cvsroot
login
例子:
cvs -d :pserver:cvs@samba.org:/cvsroot login

不是很安全,因而一般是作为匿名只读CVS访问的不二法门。从平安思索,通过系统地面帐号认证并通过SSH传输是相比好的方法,通过在客户机的/etc/profile里设置一下剧情:
CVSROOT=:ext:$USER@cvs.server.address#port:/path/to/cvsroot
CVS_RSH=ssh; export CVSROOT CVS_RSH
有着客户机全部本地用户都足以映射到CVS服务器相应同名帐号了。

比如:

CVS服务器是1九二.168.0.三,上边CVSROOT路径是/home/cvsroot,此外1台开荒客户机是1玖②.16八.0.四,要是tom在二台机器上都有同名的帐号,那么从1玖2.16八.0.四上设置了:
export CVSROOT=:ext:tom@192.168.0.3:/home/cvsroot
export CVS_RSH=ssh
tom就足以一贯在1九二.16八.0.四上对1九二.16捌.0.三的cvsroot进行访问了(假如有权力的话)
cvs checkout project_name
cd project_name
cvs update

cvs commit

假使CVS所在服务器的SSH端口不在缺省的2二,大概和客户端与CVS服务器端SSH缺省端口不相同等,有时候设置了:
:ext:$USER@test.server.address#port:/path/to/cvsroot

一如既往分外,比如有以下错误消息:
ssh: test.server.address#port: Name or service not known
cvs [checkout aborted]: end of file from server (consult above
messages if any)

缓解的秘籍是做2个本子钦赐端口转向(不可能利用alias,会出找不到文件漏洞百出):
创造叁个/usr/bin/ssh_cvs文件:
#!/usr/bin/sh
/path/to/ssh -p 34567 “$@”
然后:chmod +x /usr/bin/ssh_cvs
并CVS_RSH=ssh_cvs; export CVS_RSH

留意:port是指相应服务器SSH的端口,不是cvs pserver的端口

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.conf放到安全的地点(比如和apache的配备放在同一个目录下),
修改:cvsweb.cgi让CGI找到配置文件:
$config = $ENV{‘CVSWEB_CONFIG’} || ‘/path/to/apache/conf/cvsweb.conf’;

转到/path/to/apache/conf下并修改cvsweb.conf:

修改CVSROOT路径设置:
%CVSROOT = (
‘Development’ => ‘/path/to/cvsroot’, #<==修改指向本地的CVSROOT
);
缺省不展现已经删除的文书档案:
“hideattic” => “1”,#<==缺省不彰显已经删除的文书档案
在配置文件cvsweb.conf中还足以定制页头的叙说音讯,你能够修改$long_intro成你供给的文字
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: who? when?

将$Id$
加在程序文件开首的笺注里是二个很好的习惯,cvs能够自行解释更新个中的内容成:file_name
version time user_name 的格式,比如:cvs_card.txt,v 一.一 二零零三/04/05
0四:2四:1二 chedong Exp,能够那些音讯理解文件的最后修改人和退换时间

 

多少个常用的缺省文件:default.php<?php/* * Copyright (c) 2002 Company
Name. * $Header$
*/?>====================================Default.java:
注意文件头一般注释用 /* 开始 JAVADOC注释用 /** 开端的界别/* *
Copyright (c) 2002 MyCompany Name. * $Header$ */package
com.mycompany;import java.;/** * comments here */public class
Default { /** * Comments here * @param * @return */ public
toString() {
}}====================================default.pl:#!/usr/bin/perl -w#
Copyright (c) 2002 Company Name.# $Header$# file comments hereuse
strict;

CVS vs VSS 

CVS没有公文锁定形式,VSS在check out同时,同时记录了文本被导出者锁定。

CVS的update和commit, VSS是get_lastest_version和check in

对应VSS的check out/undo check out的CVS里是edit和unedit

在CVS中,标志自动更新功用缺省是开垦的,那样也拉动二个暧昧的难题,正是永不-kb格局增多binary文件的话在cvs自动更新时或者会招致文件失效。

$Header$ $Date$这样的标记在Virsual SourceSafe中称之为Keyword
Explaination,缺省是关门的,需求经过OPITION展开,并钦赐须求实行源文件根本词扫描的文件类型:*.txt,*.java,*.html…

对于Virsual SourceSafe和CVS都通用的TAG有:
$Header$
$Author$
$Date$
$Revision$

本人提出尽量选择通用的严重性词保障代码在CVS和VSS都能方便的追踪。

WinCVS

下载:
cvs Windows客户端:最近稳固版本为一.贰
http://www.wincvs.org/
ssh Windows客户端
http://www.networksimplicity.com/openssh/

安装好上述1个软件今后:
WinCVS客户端的admin==>preference设置
1 在general选单里
设置CVSROOT: username@192.168.0.123:/home/cvsroot
设置Authorization: 选择SSH server

2 Port选单里
钩上:check for alternate rsh name
并安装ssh.exe的路线,缺省是装在 C:\Program
Files\NetworkSimplicity\ssh\ssh.exe

下一场就能够运用WinCVS进行cvs操作了,全数操作都会跳出命令行窗口须要您输入服务器端的求证密码。

自然,假诺你以为那样很烦的话,还有叁个办法便是生成叁个尚无密码的公钥/私钥对,并安装CVS使用基于公钥/私钥的SSH认证(在general选单里)。

能够选取的diff工具:examdiff
下载:
http://www.prestosoft.com/examdiff/examdiff.htm
还是在WinCVS菜单admin==>preference的WinCVS选单里
选上:Externel diff program
并安装diff工具的门径,比如:C:\Program Files\ed16i\ExamDiff.exe
在对文本进行版本diff时,第四回索要将窗口右下角的use externel diff选上。

根据CVSTrac的小组开辟环境搭建

作为三个小组级的支出条件,版本调整系统和BUG追踪系统等都事关到用户认证部分。怎么样方便的将那些种类融为一体起来是3个相当费力的作业,毕竟我们不能指望Linux下有像Source
Offsite那样集成度异常高的本子调控/BUG追踪集成系统。

自个儿个人是很不感觉然利用pserver格局的长途用户认证的,但假诺大多数组员使用WINDOWS客户端实行开荒来说,总体来讲使用CVSROOT/passwd认证依旧很难制止的,但CVS本人用户的军管比较劳顿。本来作者打算本身用perl写贰个管理分界面包车型地铁,直到本身发觉了CVSTrac:二个基于WEB分界面包车型客车BUG追踪系统,它外挂在CVS系统上的BUG跟踪系统,当中就总结了WEB分界面包车型地铁CVSROOT/passwd文件的田管,甚至还合并了WIKIWIKI探究组功效。

那边首先说一下CVS的pserver形式下的用户认证,CVS的用户认证服务是依照inetd中的:
cvspserver stream tcp nowait nobody /usr/bin/cvs cvs
–allow-root=/home/cvsroot pserver
一般在2401端口

CVS用户数据库是依照CVSROOT/passwd文件,文件格式:
[username]:[crypt_password]:[mapping_system_user]
出于密码都用的是UNIX标准的C景逸SUVYPT加密,那个passwd文件的格式基本上是apache的htpasswd格式的恢弘(比APACHE的PASSWD文件多3个体系用户映射字段),所以这几个文件最简便易行的措施能够用
apache/bin/htpasswd -b myname mypassword
创办。注意:通过htpasswd创造出来的文本会没有映射系统用户的字段
例如:
new:geBvosup/zKl2
setup:aISQuNAAoY3qw
test:hwEpz/BX.rEDU

辉映系统用户的意在:你能够成立3个专程的CVS服务帐号,比如叫cvs,并将/home/cvsroot目录下的全体权力赋予那么些用户,然后在passwd文件里成立分歧的开销用户帐号,但付出用户帐号最终的文件读写权限都映射为cvs用户,防止了在SSH情势下两个开垦用户新建文件后的对于别的用户的公文读写权限难题。

进而的,你可以将用户分别映射到2组用户上,利用3个用户的权柄设置,防止二个种类组的文本互相访问。
new:geBvosup/zKl2:proj1
setup:aISQuNAAoY3qw:proj2
test:hwEpz/BX.rEDU:proj1

CVSTrac很好的缓解了CVSROOT/passwd的保管难点,而且蕴藏了BUG追踪报告种类和集成WIKIWIKI调换到效等,使用的CGI情势的设置,并且依照GNU
Public License:

安装进度

下载:可以从http://www.cvstrac.org 下载
作者用的是曾经在Linux上编写翻译好的应用程序包:cvstrac-一.一.1.bin.gz,
%gzip -d cvstrac-1.1.1.bin.gz
%chmod +x cvstrac-1.1.1.bin
#mv cvstarc-1.1.1.bin /usr/bin/cvstrac

初阶化cvstrac数据库:假如数据库名是 myproj
在已经装好的CVS服务器上(CVS库那时候应该早即是早先化好了,比如:cvs
init开端化在/home/cvsroot里),运维一下
%cvstrac init /home/cvsroot myproj
运营后,/home/cvsroot里会有一个的myproj.db库,使用CVSTRAC服务,/home/cvsroot/myproj.db
/home/cvsroot/CVSROOT/readers /home/cvsroot/CVSROOT/writers
/home/cvsroot/CVSROOT/passwd那多少个文件对此web服务的周转用户应该是可写的,在RedHat八上,缺省就有叁个叫apache用户和二个apache组,所以作者在httpd.conf文件中设置了用apache用户运维web服务:
User apache
Group apache,
若是服务器上apache用的是别的用户,比如:nobody
nogroup运营,则后边相应的布署中用户/组都安装为nobody nogroup
然后自身设置了#chown -R apache:apache /home/cvsroot
-rw-r–r– 1 apache apache 55296 Jan 5 19:40 myproj.db
drwxrwxr-x 3 apache apache 4096 Oct 24 13:04 CVSROOT/
drwxrwxr-x 2 apache apache 4096 Aug 30 19:47 some_proj/
此外还在/home/cvsroot/CVSROOT中装置了:
chmod 664 readers writers passwd

在apche/cgi-bin目录中创建脚本cvstrac:
#!/bin/sh
/usr/bin/cvstrac cgi /home/cvsroot
设置脚本可实践:
chmod +x /home/apache/cgi-bin/cvstrac

http://cvs.server.address/cgi-bin/cvstrac/myproj 进入管理分界面
缺省级报纸到名:setup 密码 setup
对于壹般用户能够从:
http://cvs.server.address/cgi-bin/cvstrac/myproj
修改登6密码,进行BUG报告等,
更多使用细节能够在使用中稳步精通。
备注:
在inetd里加入cvspserver服务:
cvspserver stream tcp nowait apache /usr/bin/cvs cvs
–allow-root=/home/cvsroot pserver

xietd的配备文件:%cat cvspserver
service cvspserver
{
disable = no
socket_type = stream
wait = no
user = apache
server = /usr/bin/cvs
server_args = -f –allow-root=/home/cvsroot pserver
log_on_failure += USERID
}

瞩目:那里的用户安装成apache指标是和/home/cvsroot的全体用户同样,并且必须让那些那几个用户对/home/cvsroot/下的CVSROOT/passwd和cvstrac开首化生成的myproj.db有读取权限。

对此眼下提到的WinCVS在perference里设置:
CVSROOT栏输入:username@ip.address.of.cvs:/home/cvsroot
Authenitication选择:use passwd file on server side
就足以了从服务器上导出项目了。

总结:

使用cvs +
(WinCVS/cvsweb/cvstrac),构成了三个相持完善的跨平台工作组开拓版本调节环境。

连锁财富:

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

WinCVS:
http://cvsgui.sourceforge.net/

CVSTrac: A Web-Based Bug And Patch-Set Tracking System For CVS
http://www.cvstrac.org

StatCVS:基于CVS的代码计算工具:按代码量,按开拓者的总结表等
http://sourceforge.net/projects/statcvs

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图