版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在Linux和Windows下搭建CVS服务器与CVS客户端的详细配置指南发布:2007-12-1110:23|作者:PHPDIY|来源:CSDN博客|查看:2次一、cvs2.5服务器+Eclipse配合使用(Windows)一个项目往往有多人参与,如何协调各个人的开发工作,就成为项目开发小组需要直接面对的问题。一般的解决方案是采用版本控制系统,如微软的VSS,开源的CVS以及Subversion等等。Eclipse对团队开发提供了默认的支持,其内置了CVS的客户端。所以我们只需安装一个CVS服务器端就可以进行项目开发的版本控制了。这里我们选择windows平台下的cvsnt来作cvs服务器。一.服务器设置首先到/下载一个cvsnt,我下载的版本是cvsnt-2.5.03.2382是一个windows下的msi文件安装下载号的cvsnt文件,然后点击CVSNTControlPanel打开cvsnt的控制面板进行相应的参数设置仙匚加T►Documentation►所有程序(引、5erv-U►CV5NTControlPanel区注销心回]关闭计碧CV5NTPasswordAgentWorkspaceViewer3.在控制面板的RepositoryConfiguration中进行资源库的设置CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。工作模式如下:
CVS服务器(文件版本库)/|\(版本同步)/|\开发者1开发者2开发者3作为一般开发人员挑选2,6看就可以了,CVS的管理员则更需要懂的更多一些,最后还简单介绍了一些Windows下的cvs客户端使用,CVS远程用户认证的选择及与BUG跟踪系统等开发环境的集成问题。CVS环境初始化:CVS环境的搭建管理员CVS的日常使用:日常开发中最常用的CVS命令,开发人员管理员CVS的分支开发:项目按照不同进度和目标并发进行管理员CVS的用户认证:通过SSH的远程用户认证,安全,简单管理员CVSWEB:CVS的WEB访问界面大大提高代码版本比较的效率管理员CVSTAG:将$Id$加入代码注释中,方便开发过程的跟踪开发人员CVSvsVSS:CVS和VirsualSourceSafe的比较开发人员管理员WinCVS:通过SSH认证的WinCVS认证设置基于CVSTrac的小组开发环境搭建:通过CVSTrac实现web界面的CVS用户管理,集成的BUG跟踪和WIKI交流CVS中的用户权限管理:基于系统用户的CVS权限管理和基于CVSROOT/passwd的虚拟用户管理一个系统20%的功能往往能够满足80%的需求,CVS也不例外,以下是CVS最常用的功能,可能还不到它全部命令选项的20%,作为一般开发人员平时会用cvsupdate和cvscommit就够了,更多的需求在实际应用过程中自然会出现,不时回头看看相关文档经常有意外的收获。环境设置:指定CVS库的路径CVSROOTtcshsetenvCVSROOT/path/to/cvsrootbashCVSROOT=/path/to/cvsroot;exportCVSROOT后面还提到远程CVS服务器的设置:CVSROOT=:ext:$USER@test.server.address#port:/path/to/cvsrootCVS_RSH=ssh;exportCVSROOTCVS_RSH初始化:CVS版本库的初始化。cvsinit一个项目的首次导入cvsimport-m"writesomecommentshere"project_namevendor_tagrelease_tag执行后:会将所有源文件及目录导入到/path/to/cvsroot/project_name目录下vender_tag:开发商标记release_tag:版本发布标记项目导出:将代码从CVS库里导出cvscheckoutproject_namecvs将创建project_name目录,并将最新版本的源代码导出到相应目录中。这Checkout和VirvualSourceSafe中的checkout不是一个概念,相对于VirvualSourceSafe的ch注意:第一次导出以后,就不是通过cvscheckout来同步文件了,而是要进入刚才cvscheckoutproject_name导出的project_name目录下进行具体文件的版本同步(添加,修改,删除)操作。eckouteckout是cvsupdate,checkin是cvscommit。将文件同步到最新的版本cvsupdate不制定文件名,cvs将同步所有子目录下的文件,也可以制定某个文件名!录进行同步cvsupdatefile_name最好每天开始工作前或将自己的工作导入到VS库里前都要做一次,并养成先同步后修改〃的习惯,和VirvualSourceSafe不同,CVS里没有文件锁定的概念,所有的冲突是iCommit之前解决,如果你修改过程中,有其他人修改Commit到了CVS库中,CVS会通知你文件冲突,并自动将冲突部分用>>>>>>contentoncvsserver<<<<<<contentinyourfile>>>>>>标记出来,由你确认冲突内容的取舍。版本冲突一般是在多个人修改一个文件造成的,但这种项目管理上的问题不应该指望的来解决。确认修改写入到CVS库里cvscommit-m"writesomecommentshere"file_name注意:3S的很多动作都是通过vscommit进行最后确认并修改的,最好每次只修改一个文件。在确认的前,还需要用户填写修改注释,以帮助其他开发人员了解修改的原因。如果不用写-m"comments"而直接确认'cvscommitfile_name'的话,cvs会自动调用系统缺省的文字编辑旅一般是vi)要求你写入注释。注释的质量很重要:所以不仅必须要写,而且必须写一些比较有意义的内容以方便其他开发人员能够很好的理解不好的注释,很难让其他的开发人员快速的理解:比如:-m"bugfixed"甚至-m""好的注释,甚至可以用中文-m”在用户注册过程中加入了Email地址校验"修改某个版本注释:每次只确认一个文件到CVS库里是一个很好的习惯,但难免有时候忘了指定文件名,把多个文件以同样注释commit到CVS库里了,以下命令可以允许你修改某个文件某个版本的注释:cvsadmin-m1.3:"writesomecommentshere"file_name添加文件创建好新文件后,比如:touchnew_filecvsaddnew_file注意:对于图片,Wo厂d文档等非纯文本的项目,需要使用vsadd-kb选项按2进制文件方式导入久表示扩展选项,b表示binary),否则有可能出现文件被破坏的情况比如:cvsadd-kbnew_file.gifcvsadd-kbreadme.doc如果关键词替换属性在首次导入时设置错了怎么办?cvsadmin-kkvnew_file.css然后确认修改并洋释cvsci-m"writesomecommentshere"删除文件将某个源文件物理删除后,比如:rmfile_namecvsrmfile_name然后确认修改并注释cvsci-m"writesomecommentshere"以上面前2步合并的方法为:cvsrm-ffile_namecvsci-m"whydeletefile"注意:很多c/s命令都有缩写形式:commit=>ci;update=>up;checkout=>co/get;remove=>rm;添加目录cvsadddir_name杳看修改历史cvslogfile_namecvshistoryfile_name杳看当前文件不同版本的区别cvsdiff-r1.3-r1.5file_name查看当前文件(可能已经修改了)和库中相应文件的区别cvs的web界面提供了更方便的定位文件修改和比较版本区别的方法,具体安装设置请看后面的cvsweb使用正确的通过CVS恢复旧版本的方法:如果用这个命令是给加一个STICKTAG:"1.2",虽然你的本意只是想将它恢复到1.2版本正确的恢复版本的方法是:cvsupdate-p-r1.2file_name>file_name如果不小心已经加成STICKTAG的话:用cvsupdate-A解决移动文件/文件重命名cvs里没有cvsmove或cvsrename,因为这两个操作是可以由先cvsremoveold_file_name,然后cvsaddnew_file_name实现的。删除/移动目录最方便的方法是让管理员直接移动,删除CVSROOT里相应目录(因为CVS一个项目下的子目录都是独立的,移动到$CVSROOT目录下都可以作为新的独立项目:好比一颗树,其实砍下任意一枝都能独立存活),对目录进行了修改后,要求其开发人员重新导出项目cvscheckoutproject_name或者用cvsupdate-dP同步。项目发布导出不带CVS目录的源文件做开发的时候你可能注意到了,每个开发目录下,CVS都创建了一个CVS/目录。里面有文件用于记录当前目录和CVS库之间的对应信息。但项目发布的时候你一般不希望把文件目录还带着含有CVS信息的CVS目录吧,这个一次性的导出过程使用cvsexport命令,不过export只能针对一个TAG或者日期导出,比如:cvsexport-D20021023project_namecvsexport-Dnowproject_nameCVSBranch:项目多分支同步开发确认版本里程碑:多个文件各自版本号不一样,项目到一定阶段,可以给所有文件统一指定一个阶段里程碑版本号,方便以后按照这个阶段里程碑版本号导出项目,同时也是项目的多个分支开发的基础。cvstagrelease_1_0开始一个新的里程碑:cvscommit-r2标记所有文件开始进入2.x的开发注意:CVS里的revsion和软件包的发布版本可以没有直接的关系。但所有文件使用和发布版本一致的版本号比较有助于维护。版本分支的建立在开发项目的2.x版本的时候发现1.x有问题,但2.x又不敢用,则从先前标记的里程碑:release_1_0导出一个分支release_1_0_patchcvsrtag-b-rrelease_1_0release_1_0_patchproj_dir一些人先在另外一个目录下导出release_1_0_patch这个分支:解决1.0中的紧急问题,cvscheckout-rrelease_1_0_patch而其他人员仍旧在项目的主干分支2.x上开发在release_1_0_patch上修正错误后,标记一个1.0的错误修正版本号cvstagrelease_1_0_patch_1如果2.0认为这些错误修改在2.0里也需要,也可以在2.0的开发目录下合并release_1_0_patch_1中的修改到当前代码中:cvsupdate-jrelease_1_0_patch_1CVS的远程认证通过SSH远程访问CVS使用cvs本身基于pserver的远程认证很麻烦,需要定义服务器和用户组,用户名,设置密码等,常见的登陆格式如下:cvs-d:pserver:cvs_user_name@cvs.server.address:/path/to/cvsrootlogin例子:cvs-d:pserver:cvs@:/cvsrootlogin不是很安全,因此一般是作为匿名只读CVS访问的方式。从安全考虑,通过系统本地帐号认证并通过SSH传输是比较好的办法,通过在客户机的/etc/profile里设置一下内容:CVSROOT=:ext:$USER@cvs.server.address#port:/path/to/cvsrootCVS_RSH=ssh;exportCVSROOTCVS_RSH所有客户机所有本地用户都可以映射到CVS服务器相应同名帐号了。比如:CVS服务器是,上面CVSROOT路径是/home/cvsroot,另外一台开发客户机是,如果tom在2台机器上都有同名的帐号,那么从上设置了:exportCVSROOT=:ext:tom@:/home/cvsrootexportCVS_RSH=sshtom就可以直接在上对的cvsroot进行访问了(如果有权限的话)cvscheckoutproject_namecvsupdatecvscommit如果CVS所在服务器的SSH端口不在缺省的22,或者和客户端与CVS服务器端SSH缺省端口不一致,有时候设置了::ext:$USER@test.server.address#port:/path/to/cvsroot仍然不行,比如有以下错误信息:ssh:test.server.address#port:Nameorservicenotknowncvs[checkoutaborted]:endoffilefromserver(consultabovemessagesifany)解决的方法是做一个脚本指定端口转向(不能使用alias,会出找不到文件错误):创建一个/usr/bin/ssh_cvs文件,假设远程服务器的SSH端口是非缺省端口:34567#!/bin/sh/usr/bin/ssh-p34567"$@"然后:chmod+x/usr/bin/ssh_cvs并CVS_RSH=ssh_cvs;exportCVS_RSH注意:port是指相应服务器SSH的端口,不是指cvs专用的pserver的端口CVSWEB:提高文件浏览效率CVSWEB就是CVS的WEB界面,可以大大提高程序员定位修改的效率:使用的样例可以看:/cgi/cvsweb.cgiCVSWEB的下载:CVSWEB从最初的版本已经演化出很多功能界面更丰富的版本,这个是我个人感觉安装设置比较方便的:原先在:http://www.spaghetti-code.de/software/linux/cvsweb/,但目前已经删除,目前仍可以在本站下载CVSWEB,其实最近2年FreeBSD的CVSWeb项目已经有了更好的发展吧,而当初没有用FreeBSD那个版本主要就是因为没有彩色的文件Diff功能。下载解包:tarzxfcvsweb.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-ccvsweb.passwduser修改httpd.conf:增加<Directory"/path/to/apache/cgi-bin/cvsweb/">AuthName"CVSAuthorization"AuthTypeBasicAuthUserFile/path/to/cvsweb.passwdrequirevalid-user</Directory>CVSTAGS:$Id$将$Id$加在程序文件开头的注释里是一个很好的习惯,cvs能够自动解释更新其中的内容成:file_nameversiontimeuser_name的格式,比如:cvs_card.txt,v1.12002/04/0504:24:12chedongExp,可以这些信息了解文件的最后修改人和修改时间。几个常用的缺省文件:default.php<?php/*Copyright(c)2002CompanyName.$Header$*/?>Default.java:注意文件头一般注释用/*开始JAVADOC注释用/**开始的区别/*Copyright(c)2002MyCompanyName$Header$*/packagecom.mycompany;importjava.;/**commentshere*/publicclassDefault(/**Commentshere@param@return*/default.pl:#!/usr/bin/perl-w#Copyright(c)2002CompanyName.#$Header$#filecommentshereusestrict;CVSvsVSSCVS没有文件锁定模式,VSS在checkout同时,同时记录了文件被导出者锁定。CVS的update和commit,VSS是get_lastest_version和checkin对应VSS的checkout/undocheckout的CVS里是edit和unedit在CVS中,标记自动更新功能缺省是打开的,这样也带来一个潜在的问题,就是不用-kb方式添加binary文件的话在cvs自动更新时可能会导致文件失效。$Header$$Date$这样的标记在VirsualSourceSafe中称之为KeywordExplaination,缺省是关闭的,需要通过OPITION打开,并指定需要进行源文件关键词扫描的文件类型:*.txt,*.java,*.html...对于VirsualSourceSafe和CVS都通用的TAG有:$Header$$Author$$Date$$Revision$我建议尽量使用通用的关键词保证代码在CVS和VSS都能方便的跟踪。WinCVS下载:cvsWindows客户端:目前稳定版本为1.2sshWindows客户端/openssh/安装好以上2个软件以后:WinCVS客户端的admin==>preference设置1在general选单里设置CVSROOT:username@23:/home/cvsroot设置Authorization:选择SSHserver2Port选单里钩上:checkforalternatershname并设置ssh.exe的路径,缺省是装在C:\ProgramFiles\NetworkSimplicity\ssh\ssh.exe然后就可以使用WinCVS进行cvs操作了,所有操作都会跳出命令行窗口要求你输入服务器端的认证密码。当然,如果你觉得这样很烦的话,还有一个办法就是生成一个没有密码的公钥/私钥对,并设置CVS使用基于公钥/私钥的SSH认证(在general选单里)。可以选择的diff工具:examdiff下载:/examdiff/examdiff.htm还是在WinCVS菜单admin==>preference的WinCVS选单里选上:Externeldiffprogram并设置diff工具的路径,比如:C:\ProgramFiles\ed16i\ExamDiff.exe在对文件进行版本diff时,第一次需要将窗口右下角的useexterneldiff选上。基于CVSTrac的小组开发环境搭建作为一个小组级的开发环境,版本控制系统和BUG跟踪系统等都涉及到用户认证部分。如何方便的将这些系统集成起来是一个非常困难的事情,毕竟我们不能指望Linux下有像SourceOffsite那样集成度很高的版本控制/BUG跟踪集成系统。我个人是很反对使用pserver模式的远程用户认证的,但如果大部分组员使用WINDOWS客户端进行开发的话,总体来说使用CVSROOT/passwd认证还是很难避免的,但CVS本身用户的管理比较麻烦。本来我打算自己用perl写一个管理界面的,直到我发现了CVSTrac:一个基于WEB界面的BUG跟踪系统,它外挂在CVS系统上的BUG跟踪系统,其中就包括了WEB界面的CVSROOT/passwd文件的管理,甚至还集成了WIKIWIKI讨论组功能。这里首先说一下CVS的pserver模式下的用户认证,CVS的用户认证服务是基于inetd中的:cvspserverstreamtcpnowaitapache/usr/bin/cvscvs--allow-root=/home/cvsrootpserver一般在2401端口(这个端口号很好记:49的平方)CVS用户数据库是基于CVSROOT/passwd文件,文件格式:[username]:[crypt_password]:[mapping_system_user]由于密码都用的是UNIX标准的CRYPT加密,这个passwd文件的格式基本上是apache的htpasswd格式的扩展(比APACHE的PASSWD文件多一个系统用户映射字段),所以这个文件最简单的方法可以用apache/bin/htpasswd-bmynamemypassword创建。注意:通过htpasswd创建出来的文件会没有映射系统用户的字段例如:new:geBvosup/zKl2setup:aISQuNAAoY3qwtest:hwEpz/BX.rEDU映射系统用户的目的在于:你可以创建一个专门的CVS服务帐号,比如用apache的运行用户apache,并将/home/cvsroot目录下的所有权限赋予这个用户,然后在passwd文件里创建不同的开发用户帐号,但开发用户帐号最后的文件读写权限都映射为apache用户,在SSH模式下多个系统开发用户需要在同一个组中才可以相互读写CVS库中的文件。进一步的,你可以将用户分别映射到apache这个系统用户上。new:geBvosup/zKl2:apachesetup:aISQuNAAoY3qw:apachetest:hwEpz/BX.rEDU:apacheCVSTrac很好的解决了CVSROOT/passwd的管理问题,而且包含了BUG跟踪报告系统和集成WIKIWIKI交流功能等,使用的CGI方式的安装,并且基于GNUPublicLicense在inetd里加入cvspserver服务:cvspserverstreamtcpnowaitapache/usr/bin/cvscvs--allow-root=/home/cvsrootpserverxietd的配置文件:%catcvspserverservicecvspserver{disable=nosocket_type=streamwait=nouser=apacheserver=/usr/bin/cvsserver_args=-f--allow-root=/home/cvsrootpserverlog_on_failure+=USERID}注意:这里的用户设置成apache目的是和/home/cvsroot的所有用户一致,并且必须让这个这个用户对/home/cvsroot/下的CVSROOT/passwd和cvstrac初始化生成的myproj.db有读取权限。安装过程1.下载:可以从下载我用的是已经在Linux上编译好的应用程序包:cvstrac-1.1.2.bin.gz,%gzip-dcvstrac-1.1.2.bin.gz%chmod+xcvstrac-1.1-2.bin#mvcvstarc-1.1-1.bin/usr/bin/cvstrac如果是从源代码编译:从/download.html下载SQLITE的rpm包:rpm-isqlite-devel-2.8.6-1.i386.rpm从/cvstrac/下载软件包解包,假设解包到/home/chedong/cvstrac-1.1.2下,并规划将cvstrac安装到/usr/local/bin目录下,cd/home/chedong/cvstrac-1.1.2编辑linux-gcc.mk:修改:SRCDIR=/home/chedong/cvstrac-1.1.2INSTALLDIR=/usr/local/bin然后mvlinux-gcc.mkMakefilemake#makeinstall2.初始化cvstrac数据库:假设数据库名是myproj在已经装好的CVS服务器上(CVS库这时候应该已经是初始化好了,比如:cvsinit初始化在/home/cvsroot里),运行一下%cvstracinit/home/cvsrootmyproj运行后,/home/cvsroot里会有一个的myproj.db库,使用CVSTRAC服务,/home/cvsroot/myproj.db/home/cvsroot/CVSROOT/readers/home/cvsroot/CVSROOT/writers/home/cvsroot/CVSROOT/passwd这几个文件对于web服务的运行用户应该是可写的,在RedHat8上,缺省就有一个叫apache用户和一个apache组,所以在httpd.conf文件中设置了用apache用户运行web服务:UserapacheGroupapache,然后设置属于apache用户和apache组#chown-Rapache:apache/home/cvsroot-rw-r--r--1apacheapache55296Jan519:40myproj.dbdrwxrwxr-x3apacheapache4096Oct2413:04CVSROOT/drwxrwxr-x2apacheapache4096Aug3019:47some_proj/此外还在/home/cvsroot/CVSROOT中设置了:chmod664readerswriterspasswd在apche/cgi-bin目录中创建脚本cvstrac:#!/bin/sh/usr/bin/cvstraccgi/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在setup中重新设置了CVSROOT的路径后,/home/cvsroot如果是初次使用需要在/home/cvsroot/CVSROOT下创建passwd,readers,writers文件touchpasswdreaderswriters然后设置属于apache用户,chownapache.apachepasswdreaderswriters这样使用setup用户创建新用户后会同步更新CVSROOT/passwd下的帐号修改登录密码,进行BUG报告等,更多使用细节可以在使用中慢慢了解。对于前面提到的WinCVS在perference里设置:CVSROOT栏输入:username@ip.address.of.cvs:/home/cvsrootAuthenitication选择:usepasswdfileonserverside就可以了从服务器上进行CVS操作了。CVS的用户权限管理CVS的权限管理分2种策略:基于系统文件权限的系统用户管理:适合多个在Linux上使用系统帐号的开发人员进行开发。基于CVSROOT/passwd的虚拟用户管理:适合多个在Windows平台上的开发人员将帐号映射成系统帐号使用。为什么使用apache/apache用户?首先RedHat8中缺省就有了,而且使用这个用户可以方便通过cvstrac进行WEB管理。chown-Rapache.apache/home/cvsrootchmod775/home/cvsrootLinux上通过ssh连接CVS服务器的多个开发人员:通过都属于apache组实现文件的共享读写开发人员有开发服务器上的系统帐号:sysuser1sysuser2,设置让他们都属于apache组,因为通过cvs新导入的项目都是对组开放的:664权限的,这样无论那个系统用户导入的项目文件,只要文件的组宿主是apache,所有其他同组系统开发用户就都可以读写;基于ssh远程认证的也是一样。apache(systemgroup)/|\sysuser1sysuser2sysuser3Windows上通过cvspserver连接CVS服务器的多个开发人员:通过在passwd文件种映射成apache用户实现文件的共享读写他们的帐号通过CVSROOT/passwd和readerswriters这几个文件管理;通过cvstrac设置所有虚拟用户都映射到apache用户上即可。apache(systemuser)/|\windev1windev2windev3利用CVSWinCVS/CVSWeb/CVSTrac构成了一个相对完善的跨平台工作组开发版本控制环境。相关资源:CVSHOME:CVSFAQ:http://www.loria.fr/~molli/cvs-index.html相关网站:/Top/Computers/Software/Configuration_Management/Tools/Concurrent_Versions_System/CVS--并行版本系统/cvsdoc/zh_CN/book1.htmlCVS免费书:/CVS命令的速查卡片/refcards/cvs/WinCVS:/CVSTrac:AWeb-BasedBugAndPatch-SetTrackingSystemForCVSStatCVS:基于CVS的代码统计工具:按代码量,按开发者的统计表等/projects/statcvs如何在WEB开发中规划CVS上:在Google上查"cvswebdevelopment"/bboard-archive/cvs_for_web_development/index.html一些集成了CVS的IDE环境:EclipseCVS服务器端:CVS下载地址:/(最新版本:hp:1.12.11,Linuxandwin32:1.11.17)cvsnt下载地址:/cvspro/(最新版本:2.0.58d)CVS客户端:TortoiseCVS下载地址:/(最新版本:1.8.11)wincvs下载地址:/download.html(最新版本:)Python下载地址:/download/(最新版本:2.4)TCL下载地址:/Products/ActiveTCL/(最新版本:)SmartCVS下载地址:http://www.regnis.de/download.html(最新版本:3.0.6)或者:下载WinCVS中文版一一如果对WinCVS及的Python,TCL的安装一点也不熟悉,请首先阅读WinCVS安装配置指南,在此下载!!!如果您需要WinCVS中文版,请在此下载!!!如果您需要WinCVS所需的PYTHON,请访问(仅支持2.2.3以下的版本)!!!您也可以在本站直接下载!!!Python2.2.1Python2.2.3如果您需要WinCVS所需的TCL,请访问TCL开发站点(TCLDeveloperSite)!!!您也可以在本站直接下载!!!CVSWEB下载地址:/projects/cvsweb.html(最新版本:3.0.5)viewcvs下载地址:/(最新版本:0.9.2)CvsGraph下载地址:http://www.akhphd.au.dk/~bertho/cvsgraph/(最新版本:1.5.1)缺陷跟踪:中文版CVSTrac下载地址/download.php?id=246&lang=zh-cn)(最新版本1.2)基于CVS的代码统计工具:按代码量,按开发者的统计表等:StatCVS下载地址:/projects/statcvs(最新版本:0.2.2)CVS权限管理(CVSACLisapatchforCVS):cvsacl下载地址:/(最新版本:1.2.2)subversion服务器端:subversion下载地址:http://subversion.tigris.Org/project_packages.html#binary-packages(最新版本:1.1.3)subversion客户端:tortoisesvn下载地址:/(最新版本:1.1.3)rapidsvn下载地址:/(最新版本:0.7.0)遮定职潸4.点击-Add按钮即可增加一个新的资源库Location是资源文件在文件系统的存储位置,Name是客户端访问服务器的名字,可以接受默认值,也可修改5.切换到ServerSetting
WindowNewWindowNewEditorI9;§1•帝,悖C1■T-OjjenPerspective>CustcmisePerspective...PerspectiveAs...Res已tP已rsp已!ztiu已ClosePerspectiveCloseAllPerspectives茴History任Navigator□1Outline=SynchronizeAlt+Shift+QjV圣Tasks'NaviQation卜Other...Alt+Shift+QjQ:WorkingSets►WebBrowser►PreFerences...2.在cvs视图中右键空白区域,弹出如下菜单,New卜矗RepositoryLocation...了EjeFr■已shView3.点击RepositoryLocation,弹出如下窗口
4.单击|〔Finish这,样一个客户端连接就建好了。将项目提交到CVS服务器上右键选中一个项目,选择Team,再选ShareProject,然后往下一路next即可,这里就不罗唆了从CVS服务器上下载项目到eclipse中新建一个项目时,选择CVS|ProjectsfromCVS即可,下面就是一路的next卜NewProjectSelectawizardCreateanewprojectbycheckingoutanexistingprojectfromaCVSrepasitary.Wizards:typeFiltertextJavaProject-Z-JavaProjectfromExistingAntBuildhlePlug-inProject+._■1General+Busin游sIntelligenceandReportingTook-&CV5ProjectsfrarnCV5十、_Designer+EclipseModelingFramework+&EJB+._■GraphicalModelingFramework+&J2EEw®<Back[|Next>]FinishCancel把一个项目中的更改提交到CVS服务器右键选择更改的项目(或其中的某一具体的包或者文件)然后Team|Commit下面就是next即可把CVS服务器中的更改更新到eclipse中右键选择项目(或其中的某一具体的包或者文件)然后Team|SynchronizewithRepository,下面就是next即可其他几个要点将项目提交到CVS服务器上,必须通过三中的方法,而不能直接把项目的文件夹拷贝到服务器的存储库目录中
更改CVS存储库,如果一个项目本身就是通过CVS下载到本地的,现在想把该项目组织到新的存储库中,按照三的方法,默认会提交到原来的存储库,这时,我们只需把项目中的根目录下面的CVS文件夹删除即可,再通过三中的方法即可提交到变更后的存储库中,如果还是提交不了,则右键项目,刷新一下即可。二、在Linux和Windows下搭建CVS服务器与CVS客户端的配置指南摘要:本教程包含CVS的入门知识讲解、在linux和windows下CVS服务器与CVS客户端的配置指南,详细介绍了配置过程,可以说是一篇组建CVS开发环境的入门、学习与提高的完美教程。通过本教程你可以在最短的时间里面最快的搭建好CVS服务器与CVS客户端的的开发环境。如有不明之处,请联系飘扬,你可以到我的博客(飘扬博客)给我留言或QQ47720194,我会尽力解答你的问题。目录:一、CVS入门知识详解1、什么是CVS?2、CVS基本概念二、Linux下CVS服务器与客户端的配置1、Linux下CVS服务器的配置2、Linux下CVS客户端的配置三、Windows下CVS服务器与客户端的配置1、windows下CVS服务器的配置2、windows下CVS客户端的配置四、结束语
一、CVS入门知识详解1、什么是CVS?CVS是一种客户机/服务器系统,类似于microsoftSourceSafe,可以让开发人员将他们的项目存储在称为资源库的中央位置。使用cvs客户机工具,开发人员可以对资源库的内容进行更改。CVS资源库会依次记录对每个文件所做的每个更改,并创建一个完整的项目开发进展历史。开发人员可以请求特定源文件的旧版本、查看更改日志,并根据需要执行其它一些有用的任务。所有重要的免费软件项目都使用CVS作为其程序员之间的中心点,以便能够综合各程序员的改进和更改。这些项目包括:Gnome,KDE,TheGIMP,Wine,等等。CVS的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序.这样,就好象只有一个人在修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用cvs命令进行提交,由cvs仓库管理员统一修改.这样就可以做到跟踪文件变化,冲突控制等等.CVS可以协助一组人共同开发一个工程。如果你是一个项目中的一组成员之一,CVS也能够帮助你。除非你特别仔细,你很容易覆盖其他人的工作。一些编辑器,例如GNUEmacs,试图去判定一个文件是否被两人同时修改。不幸的是,如果一个人使用其它的编辑器时,这个安全方式将不再有效。CVS使用让不同开发者独立工作的方式解决了这个问题。每一个开发者的工作都在他自己的目录内,并且CVS将在每个开发者的工作完成后进行合并工作。由于CVS是典型的C/S结构的软件,因此它也分成服务器端和客户端两部分。不过大多数CVS软件都把它们合二为一了。我们这里就分别从服务器和客户端的角度讨论cvs的使用。2、CVS基本概念Repository(仓库)
CVS的仓库存储全部的版本控制下的文件copy,通常不容许直接访问,只能通过cvs命令,获得一份本地copy,改动后再checkin(commit)回仓库。而仓库通常为与工作目录分离的。CVS通过多种方式访问仓库。每种方法有不同目录表示形式。数据如何存放在repository中:随着CVS版本的不同,存放结构会发生变化,一般情况下用户无需了解数据到底是如何存放的。Revision(修订版)每一个file的各个revision都不相同,形如1.1,1.2.1,一般1.1是该文件的第一个revision,后面的一个将自动增加最右面的一个整数,比如1.2,1.3,1.4...有时候会出现,原因见后。revision总是偶数个数字。一般情况下将revision看作时CVS自己内部的一个编号,而tag则可以标志用户的特定信息。Tag(标签)用符号化的表示方法标志文件特定revision的信息。通常不需要对某一个孤立的文件作tag,而是对所有文件同时作一个tag,以后用户可以仅向特定tag的文件提交或者checkout。另外一个作用是在发布软件的时候表示哪些文件及其哪个版本是可用的;各文件不同revision可以包括在一个tag中。如果命名一个已存在的tag默认将不会覆盖原来的;Branch(分支)当用户修改一个branch时不会对另外的branch产生任何影响。可以在适当的时候通过合并的方法将两个版本合起来;branch总是在当前revision后面加上一个偶数整数(从2开始,到0结束),所以branch总是奇数个数字,比如1.2后面branch为1.2.2,该分支下revision可能为,,...Conflict(冲突)完全是纯文本的冲突,不包含逻辑上的矛盾,比如CVS不能解决如下问题:某人修改了函数f的参数,而另外一个人在另外一个地方用老的参数调用该函数。文本冲突需要用户自己参与解决,CVS无法自动解决。(如还有不明之处,请联系飘扬,你可以到我的博客(飘扬博客)给我留言或QQ47720194,我会尽力解答你的问题。)
Module(模块):CVS服务器根目录下的第一级子目录。通常用于存放一个项目的所有文件Checkout(检出):通常指将仓库中的一整个模块首次导出到本地。Checkin(导入)::通常指通过提交整个目录结构并创建一个新的模块。Release(发行版本):整个产品的版本Update(更新):从模块中下载其他人的修改过的文件。更新本地的拷贝。Commit(提交):将自己修改过的文件提交到模块中。二、Linux下CVS服务器与客户端的配置与使用1、Linux下CVS服务器的配置在RedHatLinux7.1之后的版本上,都有自动安装CVS服务器软件,只要对该软件进行设置,即可使用。此次配置我用的是虚拟机VMware环境下的linuxredhat9.0,下面是具体的配置过程。1.1创建cvs组并加入用户在root权限下,创建一个cvs组并加入成员1)仓0建组:groupaddcvs2)打开/etc/group文件,找到该组,如cvs:x:514:,在后面添加要加入的用户,比如piaoyang,chen等,以逗号隔开,编辑结果是:cvs:x:514:piaoyang,chen只有加入这个组中的成员才能进行相关CVS操作。保存该文件。1.2创建一个仓库假定将CVSROOT指向/usr/local(也可以指向别的目录),用root登录。1)仓0建cvsroot目录:mkdir/usr/local/cvsroot
2)设置该目录的模式:chmod1777/usr/local/cvsroot3)修改环境变量:exportCVSROOT=/usr/local/cvsroot4)cvsinit这样就创建了CVSROOT。5)更新环境变量:#source/etc/profile此时系统已经认识$CVSROOT这样的环境变量1.3装入源代码1)进入代码所在目录:cd[sourcedir],如cdtest2)装载cvsimport-m"[repositorytest]"[cvstest][vendortag][releasetag]-m后面引号内填入log内容,接下来是源代码模块名称,接着是装载者,最后是标识符号,例如:cvsimport-m—CVStestllcvstestpiaoyangstartcvs组中的用户也可以创建仓库,但必须有写权限,该权限的设置在下面将会提到。(如还有不明之处,请联系飘扬,你可以到我的博客(飘扬博客)给我留言或QQ47720194,我会尽力解答你的问题。)1.4设置权限cvs初始化结束以后,在管理员用户(这里是cvs用户)的主目录/usr/local/cvsroot/下有一个CVSROOT目录,这个目录里有三个配置文件:readers,writers,passwd。我们可以通过设置这三个文件来配置CVS服务器用户的权限,下面分别介绍这几个文件的作用:readers文件:此文件中的用户允许对模块进行读取,不允许写入;writers文件:此文件中的用户允许对模块进行读取和写入;
passwd文件:此文件存储用户名和密码,当用户登录时进行验证;readers和writers的格式如下,每个用户占据一行:aaabbbcccpasswd文件的格式如下,每个用户占据一行:[cvs用户名]:[加密的口令]:[等效系统用户名]如:piaoyang:$1$rPVPciBw$IK3fb4jO7hQbPXFjK3ee..:piaoyang其中—piaoyang:$1$rPVPciBw$IK3fb4jO7hQbPXFjK3ee..:||从/etc/shadow中拷贝过来。上面三个文件在缺省安装的时候可能都不存在,需要我们自己创建,好吧,现在还是让我们用一个例子来说明吧。假设我们有下面几个用户需要使用cvs:laser,gumpwu,henry,betty,anonymous其中laser和gumpwu是系统用户,而henry,betty,anonymous我们都不想给系统用户权限,并且betty和anonymous都是只读用户,而且anonymous更是连口令都没有。然后编辑cvs管理员家目录里CVSROOT/passwd文件,加入下面几行:laser:$xxefajfka;faffa33:cvspubgumpwu:$ajfaal;323r0ofeeanv:cvspubhenry:$fajkdpaieje:cvspubbetty:fjkal;ffjieinfn/:cvspub
anonymous::cvspub注意:上面的第二个字段(分隔符为:)是密文口令,从/etc/shadow中拷贝过来即可(此方法适合cvs用户较少的情况,如果用户过多,则需要自己用程序生成密码了)。编辑readers文件,加入下面几行:anonymousbetty编辑writer文件,加入下面几行:lasergumpwuhenry这样就ok了,你再用几个用户分别登陆测试,就会发现一切都ok了。这里面的原理和说明我想就不多说了,其实很简单,和系统管理用户的概念是一样的。1.5设置开机自动运行CVS1)在/etc/xinetd.d目录下生成一个文件cvspserver。输入命令:touchcvspservervicvspserver在cvspserver文件里写入如下内容并保存:CVS:currentversioncontrlsystemDEFAULT:servicesisenable#
#servicecvspserver{socket_type=streamprotocol=tcpwait=nouser=rootserver=/usr/bin/cvsserver_args=-f--allow-root=/usr/local/cvsrootpserverlog_on_success+=USERIDlog_on_failure+=USERIDdisable=no}2)修改该文件权限:chmod644cvspserver3),到./etc/rc.d/init.d路径下,运行如下指令重新启动xinetd即可:./xinetdrestart4)重启后用root登录,察看cvs服务器是否已经运行:netstat-l|grepcvspserver
如果返回tcp00*:cvspserver*:*LISTEN,则说明cvs服务器已经运行。2、Linux下CVS客户端的配置为了连接到CVS资源库,您需要知道称为"CVSROOT"的路径。CVSROOT是一个字符串,就象URL,它告诉CVS用户远程资源库在哪里,以及如何连接它。不仅如此,根据CVS资源库是本地的还是远程的,以及连接到它的不同方式,CVS还有许多不同的CVSROOT格式。2.1连接CVS服务器当然你必须拥有cvs用户帐号和密码,以及相关权限。在Linux环境下:1)本地CVSROOTexportCVSROOT=/usr/local/cvsroot(告诉CVS客户端,存放代码的资源库在什么地方)一个实际的例子,在版本管理员将代码库存放在的机器上,路径为:/usr/local/cvsroot(如果你tel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024合同模板甲供材料协议范本
- 2024年度版权质押合同质押的版权作品和质押期限2篇
- 2024年度二手汽车交易合同及其支付方式详情2篇
- 医院住院部保安服务合同
- 通讯设备设计师招聘合同模板
- 建筑玻璃单包工施工合同
- 2024年专业辅导合作合同标准格式版B版
- 厨房设备安装施工合同范本
- 高中课外融合课程设计
- 2024小学教师聘用合同书
- 高中英语高考必背单词“分类”(共3500个)
- 普通高等学校学士学位授权专业审核标准
- 2019新人教版高中英语选择性必修四全册课文翻译(英汉对照)
- 供货保证措施以及应急保障措施
- 可疑交易的识别分析与报告
- 大酒店风险分级管控和隐患排查治理双体系文件
- 大亚圣象应收账款管理问题研究
- 2024年山东省农作物植保员技能竞赛参考试题库(含答案)
- CJ-T129-2000玻璃纤维增强塑料外护层聚氨酯泡沫塑料预制直埋保温管
- 青贮买卖合同买卖合同例文
- 学校“弘扬践行教育家精神”师德师风主题教育活动实施方案
评论
0/150
提交评论