from www.fanqiang.comcvs的配置和使用
本文出自:http://xfocus.org/ 作者:san小许 整理([email protected]) (2001-09-10 08:00:00) 首先要严正声明一下,文章的前一部分很多是拷贝粘贴自linuxforum里的帖子,如果有侵犯了你的著作
权,去找quack的律师谈谈:) cvs是一种版本控制系统,它不同于一般的版本控制系统,它可以实现版本的并发管理,即可已有多个用
户同时改动同一个文件而不会互相影响,然后不同的用户将它们各自修改的文件提交到cvs服务器上,有
cvs来进行文件之间的比较,进而把这些不同的部分按照某种算法进行合并形成一个新的版本。 cvs服务器一般架设在unix系统上,虽然也有可以在Windows上运行的服务器版本,但是其性能表现远不如
在unix上面表现的好, 但是cvs的客户端在Windows下却可以工作的很好。我在这里讲简单地介绍一下在
Linux下配制cvs服务,以及在Windows下客户端的设置情况。 首先我们先说一下如何在Linux上设置cvs服务,绝大多数的Linux发行拌种都包含了cvs,如果你的发行版
本中没有或者你向是用最新的cvs版本,你可以到http://www.cvshome.org去取得最新的服务器版本,这
里讲述的是以1.10版为基础的, 它应该适合更新的版本. 如果你是从http://www.cvshome.org上的到的.tar.gz形式的源代码版本,参照源代码中的相关的说明文
件,安装指导来编译程序,然后进行安装,如果你是用Linux发行版中的cvs包进行安装,执行相应的包管
理工具。比如在Redhat中你可以是用下面的命令来安装cvs.
rpm -ivh cvs-1.10.8-3.i386.rpm 在安装完成后,我们就可以进行相应的配置。一般cvs是用pserver的认证方式作为一种服务在Linux上运
行,先要确定系统里/etc/services文件有cvs服务的入口,一般得有以下两行:
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations cvs服务是通过inetd或者是xinetd来启动的。对于inetd,修改/etc/inetd.conf,添加以下的句子:
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/cvsroot pserver 由于在较新的Linux发行版(如:RedHat7.x)中都是用新xinetd代替了inetd,要用xinetd来启动cvs服务
你需要进入到/etc/xinetd.d/目录,然后编辑一个文本文件(名字随意),这里是用cvspserver作为文件
名,这个文件的内容如下所示:
service cvspserver
{
socket_type = stream
wait = no
user = root
env = HOME=
server = /usr/bin/cvs
server_args = --allow-root=/cvsroot pserver
}
注意上面的service后面的名称一定要和你在/etc/service文件中的cvs服务名称一样,在server_args行
我们指定了cvs使用pserver认证方式,可能容易产生误解的是env = HOME=这一行,添加这一行的目的就
是为了解决在执行一些cvs操作时产生的读取/root/.cvsignore文件的错误,上面env那行的意思就是在
运行cvs服务的时候将环境变量HOME置空,这样虽然执行cvs的用户是root,但是由于没有了HOME这个环境
变量,所以cvs就不会在去读取/root/.cvsignore文件了。 到这里我们就配置完了cvs的启动所需要的文件,但是要使cvs正常运行还需要对需要使用cvs的用户进行
设置,下面是我在配置cvs是使用的方法。首先建立一个用户组cvs,可以使用groupadd或者addgroup命名
,也可以直接编辑/etc/group文件添加这个组,然后添加一个用户cvsroot, 然后修改/etc/passwd文件
使cvsroot用户的缺省组是cvs组,而不是cvsroot组。建立/cvsroot目录,然后修改/cvsroot的属主及属
性:
#chown cvsroot.cvs /cvsroot
#chmod 755 /cvsroot
(原文这里是771,但是我们要配置cvsweb.cgi,下面再谈)。
对cvs进行初始化:cvs -d /cvsroot init
这样cvs服务器就可以使用了,用cvs -d :pserver:cvsroot@host:/cvsroot login登陆,输入cvsroot用
户在服务器上的口令,没有出现错误提示就表示成功了。 下面讲述Windows下客户端的配置,我只会用wincvs,觉得很不错,不用记那些繁琐对命令:)可以从
http://www.cvshome.org找到相应的下载地址,在linuxforum也有下载,3M多一点。启动wincvs在Admin
菜单中选择preferences然后在global页中设置CVSROOT,就是:pserver:cvsroot@host:/cvsroot。在认
证方式中选择passwd file on the cvs server, 在下面的版本号中选择合适的版本,执行Admin菜单中
的login,在提示框输入口令,如果Output窗口出现以下提示:
*****CVS exited normally with code 0*****
就表示我们现在可以在Windows下使用cvs服务了。我开始不知道成功了,还满大街的问wincvs怎么了:(
英文好就看wincvs自带的帮助文挡,我也推荐两个文档:)
wincvs.pdf winhtml.zip 特别是这个pdf文档确实不错,还是中文的:)
如果你想在网页里给大家显示你的项目,那么cvsweb是一个不错的选择。这是一个perl程序,可以到以下
地址找到最新版:
http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi
现在的版本是1.93,记得要用新版,1.8以下有一个小小的漏洞,可以到绿盟查一查。
由于是cgi程序,是以nobody用户执行的,所以/cvsroot的属性要设成775。开始我按章照搬,把属性改成
771,结果项目的目录就是不出来,埋葬了半天的青春:(还有记得把/cvsroot/CVSROOT/history的属性
改成666。cvsweb.conf里%CVSROOT数组的Configuration设成/cvsroot,就是cvs仓库的路径不要那个长长
CVSROOT变量。这些其实在它的说明文档和程序注释里都讲到了,只是这个世界是懒人的世界:)
一切都阳春白雪,可以埋头写程序了?只是cvs还有一个小小的DoS漏洞要跟大家说一下:(
每个cvs的操作过程会以操作用户的身份在/tmp下临时建一个锁定了的目录cvs_servPID,这时如果有人建
了大量的同类文件就会使cvs的操作出错,会提示:
cannot change permissions on temporary directory
Operation not permitted
下面是测试的perl程序:
#!/usr/bin/perl
#$min和$max的值根据实际情况修改
$min=400;
$max=4000;
for ($x=$min;$x<=$max;$x++) {
open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
chmod 0600, "/tmp/cvs-serv$x";
close CVSTMP;
} 解决方法:
使用server.c中的mktemp(3)函数或者其它任何可以产生唯一文件名的方法。在/tmp/目录所在的分区使
用空间配额也能解决部分问题。 主要还是扎紧篱笆,莫让别人闯进来,这毕竟是一个local的问题。
(http://www.fanqiang.com) 进入【UNIX论坛】 --------------------------------------------------------------------------------
相关文章
使用CVS进行项目开发管理 (2001-11-06 07:00:00)
cvs的配置和使用 (2001-09-10 08:00:00)
用CVS来管理自己的程序 (2001-08-09 15:00:00)
CVS 简介 (2001-06-05 18:08:00)
CVS RCS HOWTO 原始程式码版本控制系统 (3) (2001-05-02 10:11:41)
CVS RCS HOWTO 原始程式码版本控制系统 (2) (2001-05-02 10:10:18)
CVS RCS HOWTO 原始程式码版本控制系统 (1) (2001-05-02 10:09:53)
PostgreSQL7.0手册-附录-日期/时间支持-CVS 仓库 (2001-04-21 23:48:48)
使用CVS进行版本管理 (2001-04-21 20:24:35)
CVS 速成班 (2001-04-21 17:54:50)
★ 樊强制作 欢迎分享 ★
本文出自:http://xfocus.org/ 作者:san小许 整理([email protected]) (2001-09-10 08:00:00) 首先要严正声明一下,文章的前一部分很多是拷贝粘贴自linuxforum里的帖子,如果有侵犯了你的著作
权,去找quack的律师谈谈:) cvs是一种版本控制系统,它不同于一般的版本控制系统,它可以实现版本的并发管理,即可已有多个用
户同时改动同一个文件而不会互相影响,然后不同的用户将它们各自修改的文件提交到cvs服务器上,有
cvs来进行文件之间的比较,进而把这些不同的部分按照某种算法进行合并形成一个新的版本。 cvs服务器一般架设在unix系统上,虽然也有可以在Windows上运行的服务器版本,但是其性能表现远不如
在unix上面表现的好, 但是cvs的客户端在Windows下却可以工作的很好。我在这里讲简单地介绍一下在
Linux下配制cvs服务,以及在Windows下客户端的设置情况。 首先我们先说一下如何在Linux上设置cvs服务,绝大多数的Linux发行拌种都包含了cvs,如果你的发行版
本中没有或者你向是用最新的cvs版本,你可以到http://www.cvshome.org去取得最新的服务器版本,这
里讲述的是以1.10版为基础的, 它应该适合更新的版本. 如果你是从http://www.cvshome.org上的到的.tar.gz形式的源代码版本,参照源代码中的相关的说明文
件,安装指导来编译程序,然后进行安装,如果你是用Linux发行版中的cvs包进行安装,执行相应的包管
理工具。比如在Redhat中你可以是用下面的命令来安装cvs.
rpm -ivh cvs-1.10.8-3.i386.rpm 在安装完成后,我们就可以进行相应的配置。一般cvs是用pserver的认证方式作为一种服务在Linux上运
行,先要确定系统里/etc/services文件有cvs服务的入口,一般得有以下两行:
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations cvs服务是通过inetd或者是xinetd来启动的。对于inetd,修改/etc/inetd.conf,添加以下的句子:
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/cvsroot pserver 由于在较新的Linux发行版(如:RedHat7.x)中都是用新xinetd代替了inetd,要用xinetd来启动cvs服务
你需要进入到/etc/xinetd.d/目录,然后编辑一个文本文件(名字随意),这里是用cvspserver作为文件
名,这个文件的内容如下所示:
service cvspserver
{
socket_type = stream
wait = no
user = root
env = HOME=
server = /usr/bin/cvs
server_args = --allow-root=/cvsroot pserver
}
注意上面的service后面的名称一定要和你在/etc/service文件中的cvs服务名称一样,在server_args行
我们指定了cvs使用pserver认证方式,可能容易产生误解的是env = HOME=这一行,添加这一行的目的就
是为了解决在执行一些cvs操作时产生的读取/root/.cvsignore文件的错误,上面env那行的意思就是在
运行cvs服务的时候将环境变量HOME置空,这样虽然执行cvs的用户是root,但是由于没有了HOME这个环境
变量,所以cvs就不会在去读取/root/.cvsignore文件了。 到这里我们就配置完了cvs的启动所需要的文件,但是要使cvs正常运行还需要对需要使用cvs的用户进行
设置,下面是我在配置cvs是使用的方法。首先建立一个用户组cvs,可以使用groupadd或者addgroup命名
,也可以直接编辑/etc/group文件添加这个组,然后添加一个用户cvsroot, 然后修改/etc/passwd文件
使cvsroot用户的缺省组是cvs组,而不是cvsroot组。建立/cvsroot目录,然后修改/cvsroot的属主及属
性:
#chown cvsroot.cvs /cvsroot
#chmod 755 /cvsroot
(原文这里是771,但是我们要配置cvsweb.cgi,下面再谈)。
对cvs进行初始化:cvs -d /cvsroot init
这样cvs服务器就可以使用了,用cvs -d :pserver:cvsroot@host:/cvsroot login登陆,输入cvsroot用
户在服务器上的口令,没有出现错误提示就表示成功了。 下面讲述Windows下客户端的配置,我只会用wincvs,觉得很不错,不用记那些繁琐对命令:)可以从
http://www.cvshome.org找到相应的下载地址,在linuxforum也有下载,3M多一点。启动wincvs在Admin
菜单中选择preferences然后在global页中设置CVSROOT,就是:pserver:cvsroot@host:/cvsroot。在认
证方式中选择passwd file on the cvs server, 在下面的版本号中选择合适的版本,执行Admin菜单中
的login,在提示框输入口令,如果Output窗口出现以下提示:
*****CVS exited normally with code 0*****
就表示我们现在可以在Windows下使用cvs服务了。我开始不知道成功了,还满大街的问wincvs怎么了:(
英文好就看wincvs自带的帮助文挡,我也推荐两个文档:)
wincvs.pdf winhtml.zip 特别是这个pdf文档确实不错,还是中文的:)
如果你想在网页里给大家显示你的项目,那么cvsweb是一个不错的选择。这是一个perl程序,可以到以下
地址找到最新版:
http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi
现在的版本是1.93,记得要用新版,1.8以下有一个小小的漏洞,可以到绿盟查一查。
由于是cgi程序,是以nobody用户执行的,所以/cvsroot的属性要设成775。开始我按章照搬,把属性改成
771,结果项目的目录就是不出来,埋葬了半天的青春:(还有记得把/cvsroot/CVSROOT/history的属性
改成666。cvsweb.conf里%CVSROOT数组的Configuration设成/cvsroot,就是cvs仓库的路径不要那个长长
CVSROOT变量。这些其实在它的说明文档和程序注释里都讲到了,只是这个世界是懒人的世界:)
一切都阳春白雪,可以埋头写程序了?只是cvs还有一个小小的DoS漏洞要跟大家说一下:(
每个cvs的操作过程会以操作用户的身份在/tmp下临时建一个锁定了的目录cvs_servPID,这时如果有人建
了大量的同类文件就会使cvs的操作出错,会提示:
cannot change permissions on temporary directory
Operation not permitted
下面是测试的perl程序:
#!/usr/bin/perl
#$min和$max的值根据实际情况修改
$min=400;
$max=4000;
for ($x=$min;$x<=$max;$x++) {
open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
chmod 0600, "/tmp/cvs-serv$x";
close CVSTMP;
} 解决方法:
使用server.c中的mktemp(3)函数或者其它任何可以产生唯一文件名的方法。在/tmp/目录所在的分区使
用空间配额也能解决部分问题。 主要还是扎紧篱笆,莫让别人闯进来,这毕竟是一个local的问题。
(http://www.fanqiang.com) 进入【UNIX论坛】 --------------------------------------------------------------------------------
相关文章
使用CVS进行项目开发管理 (2001-11-06 07:00:00)
cvs的配置和使用 (2001-09-10 08:00:00)
用CVS来管理自己的程序 (2001-08-09 15:00:00)
CVS 简介 (2001-06-05 18:08:00)
CVS RCS HOWTO 原始程式码版本控制系统 (3) (2001-05-02 10:11:41)
CVS RCS HOWTO 原始程式码版本控制系统 (2) (2001-05-02 10:10:18)
CVS RCS HOWTO 原始程式码版本控制系统 (1) (2001-05-02 10:09:53)
PostgreSQL7.0手册-附录-日期/时间支持-CVS 仓库 (2001-04-21 23:48:48)
使用CVS进行版本管理 (2001-04-21 20:24:35)
CVS 速成班 (2001-04-21 17:54:50)
★ 樊强制作 欢迎分享 ★
解决方案 »
- 用户登出时session invalidate报错
- 新人求助,简单问题送分帖
- 一个ejb对象为什么不能被并发访问
- tomcat的首页可以配置为action码
- 請問out.println里怎么輸出<bean:message />啊?
- java调用C++的webservice的问题,高分请教,解决立即给分,不够再加
- 自己练了一个Spring程序可是怎么也不好用?是以网页形式!!
- 急问!!
- 关于j2ee的问题,请高手解答,在线等,急!
- 初学者
- 小弟弟 我要毕设了,大学一事无成,看了xml以后激动万分。想做java & xml
- 在同时掌握两种技术的前提下,客户让你选择.....?j2ee 和 vs.net
你的那篇文章我也看过了,我是照着上面做的,网上很多文章的做法都和这篇的一样,所以他的方法应该是正确的,但是不知道为什么就是不行
对了,在linux上是不是要执行start之类的命令才能启动cvs服务呢?还是只要重启xinetd就行了??