软件适航加油站

 找回密码
 成为会员
搜索
查看: 10850|回复: 0

CVS使用手册2

[复制链接]
qfwind2003 发表于 2009-7-2 15:15:13 | 显示全部楼层 |阅读模式
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=:extUSER@cvs.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH

所有客户机所有本地用户都可以映射到CVS服务器相应同名帐号了。

比如:

CVS服务器是192.168.0.3,上面CVSROOT路径是/home/cvsroot,另外一台开发客户机是192.168.0.4,如果 tom在2台机器上都有同名的帐号,那么从192.168.0.4上设置了:

export CVSROOT=:ext:tom@192.168.0.3:/home/cvsroot

export CVS_RSH=ssh

tom就可以直接在192.168.0.4上对192.168.0.3的cvsroot进行访问了(如果有权限的话)

cvs checkout project_name

cd project_name

cvs update

...

cvs commit



如果CVS所在服务器的SSH端口不在缺省的22,或者和客户端与CVS服务器端SSH缺省端口不一致,有时候设置了:

:extUSER@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)

解决的方法是做一个脚本指定端口转向(不能使用alias,会出找不到文件错误):

创建一个/usr/bin/ssh_cvs文件,假设远程服务器的SSH端口是非缺省端口:34567

#!/bin/sh

/usr/bin/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/,但目前已经删除,目前仍可以在本站下载CVSWEB,其实最近2年FreeBSD的CVSWeb项目已经有了更好的发展吧,而当初没有用FreeBSD那个版本主要就是因为没有彩色的文件Diff功能。

下载解包:

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: 增加



AuthName "CVS Authorization"

AuthType Basic

AuthUserFile /path/to/cvsweb.passwd

require valid-user





CVS TAGS: $Id: cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp

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





几个常用的缺省文件:default.PHP====================================Default.Java: 注意文件头一般注释用 /* 开始 JAVADOC注释用 /** 开始的区别/* * Copyright (c) 2002 MyCompany Name. * $Header: /home/cvsroot/tech/cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $ */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: /home/cvsroot/tech/cvs_card.html,v 1.9 2003/11/09 07:57:11 chedong Exp $# 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: /home/cvsroot/tech/cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp $ $Date: 2003/11/09 07:57:11 $这样的标记在Virsual SourceSafe中称之为Keyword Explaination,缺省是关闭的,需要通过OPITION打开,并指定需要进行源文件关键词扫描的文件类型:*.txt,*.java, *.html...

对于Virsual SourceSafe和CVS都通用的TAG有:

$Header: /home/cvsroot/tech/cvs_card.html,v 1.5 2003/03/09 08:41:46 chedong Exp



Author: chedong



Date: 2003/11/09 07:57:11 $

$Revision: 1.9 $

我建议尽量使用通用的关键词保证代码在CVS和VSS都能方便的跟踪。

WinCVS

下载:

cvs Windows客户端:目前稳定版本为1.2

http://cvsgui.sourceforge.net

ssh Windows客户端

http://www.networksimplicity.com/openssh/

安装好以上2个软件以后:

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选上。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|Archiver|手机版|软件适航加油站 ( 沪ICP备13019901号-3 )

GMT+8, 2018-12-14 21:08 , Processed in 0.140400 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表