CVSNT+Wincvs安装配置

pdf文档下载

目 录

基础篇... 2
1 CVSNT安装配置... 2
1.1 CVSNT安装:... 2
1.2.建立仓库... 2
1.3.建立用户... 3
2  Wincvs安装配置... 4
2.1安装... 4
2.2用户登陆... 4
2.3 管理CVS用户... 5
2.4 导入模块... 7
2.5导出模块... 10
进阶篇... 14
3使用脚本语言... 14
3.1安装脚本... 14
3.2指定语言库路径... 14
3.3使用脚本功能... 15
4 用户权限控制... 17
4.1设定管理员... 17
4.2建立用户组... 17
4.3赋予权限... 17
4.4权限规则... 20
结束语... 20

 

 

CVSNT+Wincvs安装配置

作者:oyoung   完成日期: 2006-8-16      邮件: oyoung6@hotmail.com

出处:http://blog.csdn.net/oyoung

版权声明:本文档可任意转载,但请勿修改内容,转载时请务必标明作者和出处信息。

 

CVS做版本控制已经有很长一段时间,有一些经验教训,很早之前就想下来,不过到现在才有时间把这些东西整理出来和大家一起分享,希望对大家有所帮助。

我们在网上看到很多CVS的文章都是基于用LinuxCVS服务器的,介绍windows的很少,不过用windows做服务器还是有的。下面我就介绍下Windows XP下的CVS服务和客户端的安装配置。

基础篇

1 CVSNT安装配置

 

1.1 CVSNT安装:

版本:cvsnt- 2.5.02 .2115

下载:http://www.march-hare.com/cvsnt/features/cvsnt/

 

CVSNTwindows下的CVS服务器,安装在服务器端。我们只需默认安装即可,然后重启。值得一提的是要注意版本,开源项目有些版本就是不稳定。我曾经试过安装过一个版本(具体不记得了,也是2.5的),用到rtag命令打标签,和用python产生baseline report时就报错,后来换成了现在这个版本就没问题了。这个版本用到现在还没发现有什么问题,个人认为应该是比较稳定的。

 

1.2.建立仓库

 

先建立需要放仓库的目录,比如D:/cvs_repository/oyoung。然后程序菜单里打开CVSNT->CVS NT Control Panel,在Repository Configurationadd,添加你的仓库路径和名字,如下图:

 

 

确认后,会提示要初始化仓库目录,确认即可。现在看下你的仓库目录D:/cvs_repository/oyoung,是不是多了个文件夹CVSROOT呢?如果有的话,就恭喜你了,这个CVSROOT就是这个仓库的配置管理文件库。

 

1.3.建立用户

 

在你的windows建立administators角色的用户cvsadmin cvsuser,用于映射后面的cvs管理员和普通用户。

 

1.4.确保上面建立的用户cvsadmincvsuser有权限访问你的CVS Temporary目录,如下图:

 

 

2  Wincvs安装配置

 

Wincvscvs的一个客户端图形工具,不管服务器是windows还是Linux,都可使用。Wincvs提供了大部分的图形操作界面,避免了直接用cvs命令来控制。如果你要用到高级的功能,也可以在它的命令窗口里输入执行。下面我们来介绍下wincvs的安装和配置。

 

2.1安装

版本:wincvs 2.0.2 .4 (build 4)

下载:http://www.wincvs.org/download.html

 

直接点下一步即可。使用wincvs前请务必先安装cvsnt。因为上面我们说过,wincvs只是提供了图形的操作界面,图形的操作也是要转成相应的cvs命令来执行。但我们不是装服务器,所以不必配置cvsnt,只要安装就好了。

2.2用户登陆

现在我们打开wincvs,在菜单栏里选择“admin->login,勾选CVSROOT,点后面的“。。。”按钮,添加CVSROOT信息,如下图:

 

l         protoco:传输协议,默认用pserver,其他的没去研究.

l         respository:表示你的cvs仓库,刚才我们已经建立了仓库oyoung,前面加正反斜杠都可以

l         username:现在就是我们的操作系统帐号

l         password: 操作系统帐号密码

l         hostname:服务器的主机名或IP

l         port:cvsnt的端口号,默认为2401

l         其余可不填(没去研究J

 

 

配置完后,点确定,如果wincvs输出框提示如下图信息,则表明登陆成功。注意一点,CVS exited normally with code 0 表示操作成功,而“CVS exited normally with code 1 表示操作失败,这个我们和经常用到的Boolean值刚好相反!

 

 

2.3 管理CVS用户

上面我们建立的是操作系统的用户,可以用来登陆CVS,但是这样就依赖于操作系统,而且我们不可能为每一个用户都建立一个操作系统帐号,所以我们应该用CVS的帐户管理。

         2.3.1 添加用户:

wincvs->admin->command line,勾选“CVSROOT,选择刚才输入的CVSROOT信息,在命令框里输入“cvs passwd -a -r cvsadmin admin”,建立CVS帐号“admin”,并映射到系统帐号“cvsadmin,然后输入密码,如下图(详细可参考passwd命令):

 

这样我们已经为cvs添加了用户admin现在我们看下服务器仓库oyoung下的CVSROOT,就会发现多了个文件passwd。里面一行代表一个用户,记录了映射的操作系统帐号和cvs帐号和密码,如下:

 admin:A.f0Kvdiyy8q2:cvsadmin

        2.3.2 赋予管理员权限:

        上面我们已经添加了cvs帐号admin,但只是一般的用户,我们需要指定哪些帐号为管理员,以有权限进行配置管理。为此我们进入到服务器上仓库oyoung下的文件夹 CVSROOT,新建一个文件admin(注意无后缀名),里面添加admin为管理员。可以添加多个管理员,一个帐号一行,如下:

admin

 admin2

 

现在admin已经是管理员,可以使用管理员的功能了,如添加用户,管理用户权限等。现在我们就以admin身份了再添加一个普通用户 land,如下图:

 

 

添加用户成功,以后我们还会谈到用户权限控制问题。

 

2.3.3 停用操作系统帐号

映射完毕后,我们就可以完全使用cvs帐号,而禁止操作系统帐号登陆。我们只需修改仓库oyoung下的CVSROOT/config文件(这个CVSROOT也可checkout到本地修改,下面2.5节会有介绍),将第2行修改,如下:

SystemAuth=YES

修改为:

SystemAuth=NO

 

现在我们再用刚才的cvsadmin操作系统帐号登陆就会失败了!

 

2.4 导入模块

        一切都准备好以后,我们就可以把需要进行版本控制的文件导入到我们刚建立好的oyoung仓库了。比如我要把spring文件夹里的全部东西导入到仓库oyoung里。这里有两种办法:

2.4.1 利用wincvs图形导入

wincvs下工具栏的浏览框里找到你要导入的目录spring,然后在左边树形菜单里右键spring,选择”import module…”,如下图:

 

 

Wincvs会对要导入的文件过滤,提示一些信息(如下图),但我们一般可以不理它,如果文件很多的话,这样的过滤会消耗很多时间,所以我们又可以用下面的第2种方法(命令行导入),这样就可以避免这些过滤。

 

       ok后,弹出对话框填写Repository(服务器上的模块名),Vendor tag(厂商标签)Release(发布标签),和选择CVSROOT.标签里不要使用空格,最好用下划线”_”连接。如下图:

 

       

 

确定后,如果提示如下信息,那么恭喜你!导入成功了!

 

 

2.4.2 命令行导入

        上面提到过,可以用命令行导入来避免文件的过滤。实际上,我们在cvs上用到的一切操作,都是要转成CVS相应命令执行的。如上面的图形导入,我们在输入框里就可以看到它转成了下列的命令执行。如下图:

        现在我们打开”admin->command line”,为了避免和刚才导入的模块名spring重复,我们把模块名改成spring_cmd,最后命令如下:

 

cvs import -m "演示命令行导入" spring_cmd MiTAC_ECOM import

 

然后选择CVSROOT,如下图:

 

       

 

确定后,我们同样可以看到导入成功,并在服务器上看多了一个spring_cmd模块。

 

最后要注意的是,CVS默认认为空目录不存在,所以如果spring里有空文件夹,,这个空文件夹将不会被导入。但是有时我们需要导入一个空目录,比较笨的方法就是随便建立一个文件,空文件也可以。如上面的spring/empty,我就建了一个空文件readme.txt.如下图:

 

 

2.5导出模块

       在导入模块后,我们就可以在把模块导出来进行控制了。首先我们在cvs浏览框里选择你要把模块导出到哪里,比如我的是E:/dev,然后在菜单里右键dev.选择“checkout module“,如下图:

 

在弹出的对话框里填入相关信息,如下图:

 

 

l         Module name path on the server:   要导出的模块名或模块下的某个目录

l         Check out into directory: 导出到本地的目录结构

l         Don’t shorten module paths:截短模块路径,是Check out into directory的子项。勾选则把模块(包括WebRootsrc)导出到e:/dev/java/spring.;否则导出到e:/dev/java

l         CVSROOT:这里我们用普通用户land身份导出模块。

l         Do not recurse into sub-directory:不导出子目录的内容

l         Do not create the CVS administrative directory:不导出cvs管理文件。这在我们项目发布时相当有用。

 

如果我们不清楚模块名,或者只想导出模块下的某个目录,那么我们可以点“Module name path on the server “后面的浏览按钮。在对话框里选择CVSROOT和勾选List,再点”Refresh(F5)”,就可以看到刚才我们导入的两个模块,如下图:

 

这样我们就可以自由选择要导出的目录了。如果你是管理员身份,,那么你还可以看到CVSROOT仓库管理模块,你也可以导出到本地来修改文件。

 

另外我们还需要在Globals面板里设置Files为“Read-only,这样导出的文件为只读。以后我们commit一个文件后,文件也会变成只读,这对文件冲突管理相当有用。”Prune empty directory”,勾选则不导出空目录,这个视需要而定。其余选项就不多说了。如下图:

 

 

确定导出成功后,我们在e:/dev/java下看到了spring这个模块。如下图:

 

 

注意:导出的目录里不能有和cvs上的目录,文件名相同,否则会提示“it is in the way“错误。比较常见的情况是,可能我们项目中途才开始用CVS来管理,那么开发人员本地已经有了模块的某些部分(如已有了e:/eclipse/spring/WebRoot),只需没有那部分就行了(src)。那么我们想只需要在e:/eclipse/导出spring模块,WebRoot会被cvs上的覆盖,而src也导出来了。如下图:

 

 

确定后,我们发现src模块已经被成功导出,但WebRoot模块却出现了问题。如下图:

 

 

因为WebRoot模块里已经存在了userEdit.jspCVS就无法再将这个文件导出覆盖本地文件,所以userEdit.jsp状态还是Unkown,没有和cvs关联。解决办法就是在本地把WebRoot文件夹全部删除,然后再从CVS全部导出,实际上不算办法^_^(不知道CVS为什么不提供覆盖L)。

 

 

至此,CVS的安装和基础配置我们就已经做好,包括经建立cvs服务器,建立仓库,导进模块,导出模块。现在我们就可以使用cvs进行版本控制,至于wincvs的使用,很多文章都有介绍,我就不再废话了。下面讲下一些使用脚本语言和用户权限控制。

进阶篇

3使用脚本语言

3.1安装脚本

3.1.1 安装python

     版本: 2.4.3

     下载地址:http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi

     安装比较简单,直接点下一步即可。

3.1.2 安装perl

        版本: 5.8.8 .817

地址:http://downloads.activestate.com/ActivePerl/Windows/5.8

/ActivePerl- 5.8.8 .817-MSWin32-x86-257965.msi

安装比较简单,直接点下一步即可。
3.1.3 安装tcl

版本: 8.4.13

 地址:http://downloads.activestate.com/ActiveTcl/Windows/8.4.13

/ActiveTcl 8.4.13 .0.261555-win32-ix86-threaded.exe

安装比较简单,直接点下一步即可.

 

3.2指定语言库路径

安装完3个脚本语言之后。打开wincvs->Admin->Preference->Wincvs.指定TCL DLL的路径到你安装的tcl库。注意不用指定Python,如下图:


 

3.3使用脚本功能

完成上述的步骤后,打开wincvs->Macros.我们就可以看到多了很多的功能。这些都是用上面3种语言写的,代码在你安装的Macros目录下,如D:/Program Files/GNU/WinCvs 2.0/Macros。当然,如果你也可以用这些脚本语言自己写一些功能。我们也可以下载脚本放到该目录下,相关下载见:

http://ximbiot.com/cvs/wiki/index.php?title=CVS_Clients

在这里,我们只介绍其中的一些功能,其他的自己可以试一下。

3.3.1  产生修改日志

    这个功能可以根据条件统计所有commit到服务器的文件。

首先进入 Macros->cvs->Build changeLog (advanced),给文件命名:ChangeLog20060816(land),如下图:

 

 

ok后,再填写选项,如下图:

l         w 只列出登陆人的修改文件。否则列出全部用户

l         r  列出某个分支,从开始到结束标签之间的

l         d 列出日期之间的。这里”<”表示大于等于开始日期,小于结束日期,所以上面命令d 2006-08-16 < 2006-08-17 只列出 2006-08-16 这一天的修改文件。

 

OK后就会在当前目录产生文件ChangeLog20060816(land),内容如下图:

我们可以看到,它列出了修改人land20060816,把修改后版本是1.3文件的userList.jsp Commit进了服务器,注释是:第二次修改。

 

3.3.2   利用输出窗口当命令窗口

      现在我们可以在wincvs的输出窗口里直接输入cvs命令,然后回车执行即可,非常方便。比如我们输入登录命令,然后回车,它就会以当前路径的CVSROOT登录,如下图:

 

 

4 用户权限控制

4.1设定管理员

 首先我们要指定管理员。添加一个帐号admin,然后赋予它管理员的权限,具体操作见上面2.3.

4.2建立用户组

我们可以把用户权限我们都分配到组,这样方便于管理。在仓库oyoungCVSROOT里建立文件group,并把相应帐号归到各个组下,帐号之间用空格间隔。如下:

PMGrp:land

RDGrp:simon oyoung

TestGrp:test

上面建立了3个组, PMGrpRDGrpTestGrp,然后我们把用户land归到PMGrpsimonoyoung归到RDGrptest归到TestGrp

4.3赋予权限

     CVS5种权限,read,write,create,tag,control,各种权限对应的操作如下:

 

l         Read:可以更新,读取

l         Write:可以编辑,commit,删除

l         Create:可以建新的文件

l         Tag: 可以打标签

l         Control:可有权限修改文件的权限,

 

.如果我们没有限制,那么全部用户都可以拥有上述前4种权限。而control这个权限会分配给文件创建者和管理员。

4.3.1 显示权限列表

命令:cvs lsacl(详细可参考Wincvs自带有的CVS帮助文档)

选项:

l         -d 只列出目录而非文件 

l         -R  递归

 

首先我们要以admin身份导出spring模块,为方便比较,模块还是导出到e:/dev/java,不过模块名改成spring(admin),以区分land身份导出的spring.如下图:

 

我们选中spring(admin)/WebRoott/WEB-INF,然后在Wincvs的输出框里,输入命令”cvs lsacl”,然后回车,结果如下图:

 

 

列出了WEB-INFowneradmin.

4.3.2 添加删除用户权限

命令:cvs chacl(详细可参考Wincvs自带有的CVS帮助文档)

选项:

l         -a 添加权限

l         -d 删除权限

l         -u 指定用户或组

l         -m 指定错误提示信息

l         -p 指定优先级

4.3.2 .1 添加用户权限

     比如,我们禁止组PMGrpspring(admin)/WebRoot/WEB-INF的写权限,这样组成员land就不能updateedit WEB-IN文件夹里的所有文件。首先选中spring(admin)/WebRoot/WEB-INF,然后输入命令,如下图:

 

现在我们用cvs lsacl 看下权限分配情况,结果如下图:

已经显示添加了禁止写权限,那么我们再看下实际情况,我们选中spring/WebRoot/WEB-INF/struts-config.xml(这个是以land身份登录的),然后选中菜单栏的Trace->Reserved Edit 编辑它,如下图:

 

结果提示,编辑错误,如下图:

   如果我们强行修改,然后commit,也会提示错误,如下图:

4.3.2 .2 删除用户权限

我们删除刚才添加的权限,修改命令,如下图即可:

 

 

4.4权限规则

有时我们对目录和其下的文件,或者对用户和所在的组设定不同的权限,这样就会带来权限的冲突。CVS会遵循一定的规则,经过实际测试,总结了以下几条规则:

1         目录权限>文件权限

当对目录和其下的文件赋予不同的权限给同一个用户时,则目录权限覆盖文件权限。

2         用户权限>组权限

当对同一文件赋予了不同的权限给用户和其所在组时,用户权限覆盖组权限。

3         顺序规则

当用户属于多个组,而各个组发生权限冲突时,则以cvs lsacl列出的顺序靠前的为准。而排序的参数是以我们设定权限时用-p指定的参数,排序规则按字符串升序排。

 

 

 

 

 

 

结束语

    花了3天时间终于把整个文档整理了出来,都有点累不想写了,所以后面权限规则我都没做实际演示,希望各位能够原谅。其实我还想写下Wincvs的日常使用,不过网上这方面的资料很多,我就懒得再去大费口舌了。需要提醒一点就是,关于文件冲突管理部分:我们编辑文件时最好用Reserved Edit(保留编辑),这样第2个人再用Reserved Edit编辑这个文件时,CVS就会告诉他错误,因为某某在哪什么时候正在编辑这个文件。好了,再说就不叫结束语了,希望这个文档对大家有所帮助!也欢迎来信交流指正!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVSNT安装注意点: 1)配置CVSNT默认管理目录 方法一:通过CVSNT Control Panel控制面板 - Pepository configuration 来配置路径 方法二:通过命令来建立cvs -d /usr/local/cvsroot init 2)配置服务器缓存目录(-T) windows平台下默认:c:\windows\temp linux平台下默认:/tmp 3)配置验证方式: 建立好默认管理目录后,会在其目录里产生CVSROOT配置文件夹, 找到config文件,其中 SystemAuth有两个值yes和no: yes:pserver将使用系统用户数据库和passwd文件来共同验证 (若passwd文件不存在或者文件中没有相应的资料,则用系统用户来进行验证) 默认为yes no:所有的用户必须在passwd中存在,根据passwd的内容来进行用户的验证。 我这里所阐述的方案就是工作在no的下面的,修改完之后提交到服务器, 提交完毕服务器就处在CVSNT的独立验证模式下了。在这个工作方式下, NT本地的用户和CVSNT用户没有任何本质的联系和影响(仅仅是要建立一个别名)。 4)解决 no such repository 现象 最新的cvsnt可能采用unix的设置访问方式,即使你是cvsnt也不需要些盘符。 5)解决认证失败 情况一:SystemAuth=yes 系统集成验证 cvs [login aborted]: authorization failed: server xxx.xxx.xx.xx rejected access to /coderoot for user cvsuser 解决方法:需要使用系统用户登录,例如administrator 情况二:cvsnt 单一验证 cvs [login aborted]: no such user cvsuser in CVSROOT/passwd 解决方法:passwd文件默认是没有的,里面字段含义是 CVS登录用户名:密码(加密):系统用户 在服务器CVSROOT目录建立一个passwd文件,之后输入cvsadmin: 表示建立一个cvsadmin空密码的用户。 下面具体介绍下passwd文件: 一定要注意:这个文件是不能在客户端进行修改的,不能checkout出来。 每一行代表一个用户,总共有三部分信息,用户名、密码、本地用户 三部分之间使用冒号“:”来进行分割。 用户名:就是登陆CVS的用户名 密 码:用户的密码,这里是经过加密的,如果为空,那么就是空密码 本地用户:CVS用户这个别名对应的本地用户,(跟本地用户没有任何其 他关系,仅仅是别名的关系) 如果在本地系统中存在一个用户名bash,那么要在CVS建立一个bach这样的 用户就不需要在后面指出对应的系统用户,melissa后面的pubcvs就是系统用户, 在本地系统上面存在的用户。对于要用命令增加这两种用户的格式如下: cvs passwd –a bach cvs passwd –r pubcvs –a melissa 在库建立的时候可以在服务器上建立一个简单的passwd初始化文件,加一行 cvsadmin: 这样,就给出了一个cvsadmin这个空密码用户(本地系统中有这样的用户, 就可以不加到后面去),然后在客户端来进行修改和以后的用户增加工作。 注意:在客户端进行其他之前请先首先修改这个密码,以防止别人进行破坏。 在服务器端建立了这个文件以后,就不用再手动进行修改了,当你在客户端 进行密码或者用户的增加删除的时候,系统会自动进行这个文件的更新。这 个文件是管理着CVSNT系统中的所有的用户,所以,要特别重视,不了解这个 文件格式的,不要去随便修改,更加不要尝试在客户端进行修改! 6)远程管理建立/用户和用户组的建立 1)首先使用系统集成认证的方式登录CVSNT,检出(checkout)根目录(.)下所有 文件(包括cvsroot目录); 2)调整和查看当前用户权限: 添加用户操作: 将系统账号升级成CVSNT的超级管理员帐户: cvs passwd -r administrator -a cvsadmin(当前帐户) 添加admin文件: 接着重新登录,首先将CVSROOT检出,在CVSROOT下新建admin文件,内容为 cvsadmin 然后上传更新 接下来可以有权限操作 cvs passwd -a username 修改用户权限:cvs chacl username:r|w|c|n,(r:Read w:write c:control n:none) 射影系统用户: cvs passwd -r 系统用户名 passwd里用户名 添加组操作: 要添加组管理,只需同添加admin步骤一样,按照格式要求新建group文件即可。 查看权限操作: r (读取权限)w (写入权限)c (创建和删除权限)n (没有任何权限) 选中刚刚下载的【CVSRoot】模块,【Ctrl+L】或Admin=>Command Line…,弹出Command Line Settings对话框,直接执行CVS命令。 取消所有用户的默认权限:cvs chacl default:n 回车,OK,完成。 设置Administrator拥有所有权限:cvs chacl administrator:rcw 回车,OK,完成。 更改【CVSRoot】的拥有者:cvs chown administrator 回车,OK,完成。 查看【CVSRoot】的权限状态:cvs lsacl 回车,OK 3)模块的配置:在【CVSRoot】模块目录下有一个modules文件,打开编辑 CVSRoot CVSRoot sean工作目录 -a sean 4)上述操作可能导致权限问题,无法提交更新,解决方法如下 linux:在CVSROOT下的readers、writers、passwd以及repository的许可权限,决定了上述的操作 windows:把CVSNT Control Panel中的Advanced的All user are read给勾选了,这样设置了之后就变成了所有用户只能读不能写了, 去掉勾问题解决 7)KeyWord自动宏替换 CVS缺省会对文件进行keyword(宏)替换,在文件中加入这些关键字是个良好的工作习惯 $Id$ 关键字是用文件名、版本、时间、作者及代码性质替换,如果使用-l选项取出,在Exp后 面会加上登录用户的名称。除了$Id$关键字,RCS还支持下面常用的关键字: $Log$ : 你所提供的修改日志信息。 $Author$ :存入该版本的作者。 $Locker$ : 该版本的加锁者 $State$ : 该版本的状态 Exp(试验版), Stab(稳定版), Rel(发行版).缺省是Exp $Date$ : 该版本存入的时间,使用UTC时间格式。 $Revision$ : 该版本的版本号 $RCSfile$ : RCS文件名 $Source$ : RCS全路径名 $Name$ : 取回该版本的符号名 $Header$ : 相当于$ Source $$ Revision$$Date$$Author $$State$$Locker$的组合 更新时的选项如果选择 -kkv或-kkvl等,更新的文件中Id号虽然会自动替代,但是在某些编辑器中, 可能会打开时每行间插入空行。解决方法是更新时点击右键弹出的command, 以命令行的方式更新对象,对象可选整个目录,也可以是选定的文件, 更新选项自己添加,如 cvs update -kbkkv main.c 可用的模式为: -kkv(默认产生替换) 使用默认形式产生关键字字符串,如。 $Revision: 5.7 $ 对于 Revision 关键字。 -kkvl 类似 -kkv,如果指定的版本现在被加锁,还需要插入加锁者的名字。锁名与使用的 cvs admin -l 命令相关。 -kk(忽略其值,继续替换) 在关键字字符串中只生成关键字名;忽略其值。例如,对于关键字 Revision,生成的字符串是 $Revision$ 而不是 $Revision: 5.7 $。这一选项在比较版本差异时忽略关键字替换的影响非常有用(参阅 Merging and keywords)。 -ko(不替换,采用旧的) 生成旧的关键字字符串,在工作中的文件与检入前一样。例如:对于关键字 Revision,如果检入前字符串是 $Revision: 1.1 $,则生成的字串与以前相同而不会是 $Revision: 5.7 $。 -kb(替换过程中阻止换行转换) 类似 -ko 选项,并阻止换行字符的转换,这种转换是因为换行符在仓库(只是换行) 的形式与客户机使用的操作系统不同。对有些系统,比如 Unix,换行符就是行中止符,这样就和 -ko 没什么区别。关于二进制文件的更多信息,参阅 Binary files。 -kv(一次性替换) 只为关键字符串生成关键字值。例如,对于关键字 Revision,生成的字串是 5.7,而不是 $Revision: 5.7 $。这种方法有助于一些难以从 $Revision: $ 这样的字符串中剥去关键字分界符的编程语言生成文件。但是,一旦删除关键字名,以后将不能执行关键字替换,所以应小心使用该选项。 注意:代码中如果有$Revision$和$Date$,每次提交时代码中的这种keyword都会被替换。如果和另外一个team用的是不同的cvs进行开发。这种替换会引起问题。本来文件内容没有变化,但提交到cvs之后文件就变了,发给另外一个team,会造成对方的困扰。 cvs admin -ko some\path\in\component\* -r 这个命令的作用是关闭Keyword substitution.这样.我们提交到cvs上的文件中的$Revision$和$Date$就不会被修改了. 如果以后需要恢复这个功能,用 cvs admin -kkv some\path\in\component\* -r 8)关于无法更新版本状态以及更新版本状态中的注意点 cvs admin -s State[:rev] 命令的使用。 注意:该命令只有在admin里的用户才有权限使用 State 为中文的时候,文件编码有可能影响到显示 9)关于CVSNT服务器时区(时间戳)始终是UTC 这个问题找了半天,查了官方很多资料始终没有找到明确的说明。 可以这么理解,应该是CVSNT处于Intelnet运作模式,需要统一的 标准时区来定义时间,这点希望在之后的版本中得到更好的修改!! 在控制面板-Advanced中的Zeroconf publication 的相关设定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值