1. Q:CVS提交文件的一个问题,若是版本不一致,会出现以下状况:
cvs commit: sticky tag `1.2' for file `abc.c' is not a branch
cvs [commit aborted]: correct above errors first!解决办法: 进入cvs中该文件所在文件夹,而后找到CVS目录(隐藏的),进入该目录,打开Entries文件,而后找到标记有版本号的地方,如:html
cd CVS
vi Entiresjava
/abc.c/1.2/Tue Dec 17 13:33:06 2002//T1.2linux
A: 而后T1.2标记删除,再次提交便可。web
2. Q: Could not connect to :pserver:liusheng@cvs.cssweb.sh.cn:/cvs_2010/project/sywg(SYWG): Cannot connect to host: Connection timed out: connect
Connection timed out: connectwindows
A: 这问题我也出现了,重启服务器就好。
CVS常见问题解答bash
基于WINCVS:服务器
1、配置问题:app
一、win下的rwc = linux下的rwx吧?若是我想让一个用户只有只读权限,应该设置成r--吗?jsp
答:r 就能够了
二、 我在设置更改【CVSRoot】的拥有者:cvs chown administrator时,为何老是不成功呀.提示cvs server: 'admin' does not own '.'
答:1.admin 不是超级用户了
2.对cvsroot admin 不是拥有者
应使用超级用户或 cvsroot 的拥有者登录
三、我配了一个用户,如今不记得给他配什么密码了,这可怎么办?有什么办法吗?
答:以administrator登录,cvs passwd user,而后重设密码
四、是为每一个用户创建本身的工做目录,把本身开发的模块放在本身的目录下方便,仍是把一个项目放在一个公共的目录,为每一个人分配不一样的权限方便呢?
答:若是每一个人负责的东西都和别人没有关系,那显然是工做目录分开方便。不过这对一个项目总体来讲不是很好,有些乱。并且,若是各我的负责的东西之间有交叉就更不行了。
五、为每一个人分配不一样的权限,我不知道这个在CVSNT服务器上怎么作。
答:cvs chacl default:n
cvs chacl user:rcw
n表示没有权限,r表示读,c:建、删,w是写
六、我想让某一个用户拥有一个项目下一个子文件夹的读写权限,其的文件夹下不具备权限应该怎么指定呢?
答:分别对单独目录操做
七、在服务器端用户是怎么设置的呢?用WinNT用户仍是CVS本身的用户?我不知道怎么设置CVS本身的用户,但用WinNT的用户好像和权限相关的地方都有问题啊。
答:NT下用建立组,把用户分配到不一样的组,给组建立权限
八、是否是nt上存在的用户就能够登陆cvs的啊?仍是必定要建立一下?为何我用本机上的用户登陆cvs就出现“cvs [login aborted]: authorization failed: server 192.168.0.180 rejected access to F:/pxh for user eileen”啊
答:要映射到CVS用户
九、配置代码是指什么?
答:配置代码表示模块运行的配置环境等,好比说平台
十、如何作到只有部份人可IMPORT?
想要限制IMPORT的权限,在CVSROOT的同级目录下建一个.PERM文件,文件中写入能够IMPORT的用户名,例如只容许ADMINISTRATOR进行IMPORT操做,只需写入两行:
Default:n
Administrator:rcw
需对CVSROOT进行权限设置,只有ADMINSTRATOR能够访问。且更改拥有为ADMINISTRATOR
十一、出现cvs chacl Administrator:rcw
cvs [server aborted]: Invalid permissions: 'rcw
', can only have r, w, and c
***** CVS exited normally with code 1 *****
的提示是怎么回事?
答:出现\n 这样的提示表示在打入命令时多按了一个回车,将命令后的回车去掉便可
十二、出现cvs chacl flw:rcw
cvs chacl: Empty password used - try 'cvs login' with a real password
客户端曾经有两个不一样的用户登陆过,cvs客户端记录下了你前个登陆的用户的信息,认为你仍是前个用户,原来的目录下没有cvs的信息,从新check out出来的有cvs的信息的
解决方法:换了一个目录导出,而后再作权限
1三、在利用passwd管理用户时出现不能解决的问题,administrator用户再也不里面
把passwd内容删了 ,删完后,以系统管理员的身份进入 ,密码就是系统管理员的密码,而后再PASSWD建用户命令行输入cvs passwd -r -a administrator adminstrator
1四、之前cvsnt在ip是192.168.115.170上,如今我把cvsnt装本身机器上了,ip是192.168.2.55,并且也在本机登陆成功了,但是使用命令的时候会提示connect to 192.168.115.170;2401 failed: 因为链接方在一段时间后没有正确的答复或链接的主机没有反应,链接尝试失败。这个设置应该在哪里能改过来呢???
答:手动修改导出的工做目录里的隐藏文件ROOT中ip地址
1五、如何建CVS用户
在winNT下创建一个用户,而后在cvs里建用户映射到那一个用户,也就是用-a参数, cvs passwd -a -r windows用户 cvs用户1
cvs passwd -a -r windows用户 cvs用户2
。。。。。。。。
1六、建一个库配置过程
(1)、创建目录,add这个目录
(2)、CVSNT中control panel里的advance页面上的第二个选项要勾上
(3)、设置admin->preference
(4)、用系统的管理用户登陆导出CVSROOT目录
(5)、对CVSROOT目录进行权限设置,输入命令
cvs chacl default:n
cvs passwd -a -r 系统管理员 cvs管理员
cvs chacl cvs管理员:rcw
cvs chown cvs管理员(以上就是更改cvsroot文件夹下的.perms以及.owner文件内容,分别控制读写权限以及全部权)
(6)、在cvsroot下加入新文件admin里面写入cvs管理员
(7)、更改config:第二行的#sysauth=yes改成sysauth=no
1七、为何一个用户有时候能够登陆,有时候不能?
由于config文件中第二行SystemAuth前的那个#没有去掉,因此config里的SystemAuth设置是无效的,因此用户有时候能够登陆,有时候不能,设成SystemAuth=no时只能是cvs用户验证方式登录,设成SystemAuth=yes时可用windows和cvs两种混和验证方式登录
1八、就是好比目录aa aa\aaa\aaaa,我想让g用户查看aaaa,但又不能查看其它内容aaa目录下的其它内容,各位,请问如何实现。
aaa级的其余目录权限设为n,只有aaaa目录能够r
1九、如何用group的方式设置cvs的访问权限?
你在cvsroot里面添加一个group文件,把相同权限的人加到里面就能够了
我设置了两个组:test1:aaa bbb n
test2:ccc rcw
使用bbb登陆后,没法下载项目,若是我把bbb放在test2组下,就可下载项目。
分别对两个组又用chacl设置权限了
只要对组设置了权限后,想让哪一个用户拥有什么权限,只要把用户入到组下就能够了,
就不用在从新设置权限了。
哪怕我的权限是rw,而组是n,都是以我的权限优先组的权限矛盾
20、服务器端的整个项目的目录能不能直接改目录名?
答:不能
2一、我登录不上cvsnt,老显示“cvs [login aborted]: authorization failed“怎么回事,但是我把cvsnt装到一个server的机器上问题就解决了,我又装一个到porfession上有没法登录了,配置是同样的
答:cvs -d c: / catv passwd -a administrator
运行了一下上面得命令就能够了,这个命令在cvsroot下创建了个passwd文件,并把用户添加进去,好像cvsnt用得是混合登录方式,系统有administrator,而cvsnt得cvsroot下没administrator,运行一下这个命令就建了administrator这个用户了,
2二、加writers和readers文件有什么做用呀
答:只有加入WRITERS中的用户才能进行提交
加入READERS中的用户只能读取
同时在两个文件中的用户只能读取
两个文件是须要手动添加得(混合模式下要用这两个文件)
如里有了writers和readers两个文件,能够在项目还没上传时,就对用户进行权限控制我不需每次都用命令分配权限。
另:默认状态下,passwd文件是不存在的,若是你要在cvsnt验证模式下工做的话,就必须创建passwd文件
2、操做问题:
一、我在登陆时,信息窗口中显示的就是之前的用户呀.应该怎么改呢?
答:你换用户后,你的工做目录也要换
二、是否是我设置了用户权限后,用那个用户登陆后,要么用marco下的把cvsroot改掉而后操做,要么checkout到另外一个目录才能操做?
答:不一样用户要checkout到不一样目录才能对按权限对文件进行操做
三、我想吧文件传到A下面的B目录里,应该怎么写路径?wincvs?
答:import到a\b就能够了
四、CVS是否是不能import一个空目录的?
答:不能
五、我 import 进去后是 1.1.1.1 想改为 4.0 怎么改
答:固定版本,使用COMMIT SELECT ,而后将第三个选项打勾,写上你要固定的版本号就能够了
六、如何在wincvs下向CVSnt提交一个新建子目录
答:新建文件夹-->添加选项-->提交选项
七、好比我在一个已有的文件夹a下,添加了2个子文件夹a1和a2,是否是只能把a一、a2选中之后,添加而不能选中a,而后直接提交呢
答:前者
并且a1和a2都不能为空,是吗?
是的。由于你a1,a2都是非cvs文件,提交也不会成功的
子目录添加没有继承性
八、我在改一个文件中的一个函数,改完后提交,另外一个也改了这个函数,改后提交,那这个更改后的结果是什么?
答:上传提示冲突,结果是你传上去了,他传的时候有冲突。CVS会要求他先Update(若同时上传也会提示冲突。
九、我执行cvs admin -l1.7,提示cvs admin: while processing more than one file:
cvs [admin aborted]: attempt to specify a numeric revision
答:-l要和后面的版本号连在一块儿,没有空格,好比版本号为V1.7,应写成cvs admin -l1.7 filename.doc,一次只能指定一个,并且要输文件全名,不能用 * -u能够解锁
十、我locked了一个文件后,显示已经被locked了,可是我还能够edit
答:那里的 lock是 lock服务器端的文件,本机能够修改,但不能提交
十一、若是我提交了删除,别人在check整个工程,那被删除的还会被CHECK出来?
答:不会被check出来。
十二、如何查看文件的不一样
答:cvs log
1三、我想比较一下两个Tag或Branch之间有哪些文件改动过,用什么命令?
答:一、export两个版本分别到两个目录,而后用文本比较工具比较两个目录的差异
二、cvs diff -r Tag1 -r Tag2 --brief
这样会告诉你Tag1和Tag2之间有哪些文件差异。
1四、你们对tag的命名规则通常是怎么规定的
答:项目名-模块名-配置代码-版本号
1五、CVS如何作合并:
答:若是改了同一个文件不一样的地方,会自动合并,若是改的是相同的地方就会产生冲突,也许须要手动更改
二进制文件没法合并。因此若是你把c文件当成二进制Import了,致使之后的合并功能都无效了。
不能太信任CVS的合并功能,就算提示合并成功,也要仔细看看,有时自动合并非你
须要的结果。
通常使用checkout read-only ,而后编辑时用reserved edit ,不建议使用force edit,就可防止多人修改。
1六、把分支上文件修改的内容合并到开发主线上后,怎么不能提交了?
在你合并完后,要进行修改才能提交,并非一合并就提交
1七、依时间点取出过去的文件,若是该文件在此时间以前存在,当前已经不存在了,如何再取出该文件啊?
答:重置标签
cvs -q update –A
1八、cvs -q update –A中参数表明什么
-q:不输出信息
-A:Reset any sticky tags/date/options.
-a:Clear tag from removed files that would not otherwise be tagged.
1九、为何CHECKOUT出来的文件在wincvs中看不到
view->file filter->clear all
20、xml,mdb,gif,cpp,cs之类的文件checkin的时候文件类型应该转换成什么样的
啊?
答:二进制,咱们把各类源代码文件(java,c,cpp,html,jsp,css,js等等)做为文本文件,其余文件,包括图形文件,文档(doc,pdm,cdm,vsd,mpp)等做为二进制
用文本的尽可能不能二进制。二进制不能作比较
(用ultraedit打开一下,看的懂的就是文本类型,看不懂的就是二进制 )
2一、管理员创建新账户后,客户端用户能改变他的密码吗?
能,cvs passwd,而后更改,直接输新密码两次
2二、传错了,如何修改格式?
change text to binary:
cvs admin -kb foo.c
cvs update -A foo.c
back to text :
cvs admin -kkv foo.c
cvs update -A foo.c(试验时传后出现乱码)
2三、我想比较一个本地文件及其对应的服务器上的不一样修订,好比昨天的一个修订,可是如今怎么得知服务器上昨天那个修订号呢,我使用wincvs。
答:查看文件的图型,点击哪部都应该能看到版本号和日期。
2四、若是我在合并的时候出现冲突,那我怎么调整主干中这个冲突的文件,我如今没法提交
答:你本身手工冲突,而后提交
2五、出现:cvs commit -m "no message" tony111.txt (in directory E:\proj\training\)
cvs server: sticky tag `1.2' for file `tony111.txt' is not a branch
cvs [server aborted]: correct above errors first!
答:更新时把标签去掉就行了,就是update时要把第三个选项勾上
2六、如何下载分支?
答:选中主干co 时候指定分支或者tag
2七、请问你们,分支是否是不能单独提交?要合并到主干上才能提交的?
答:不是,分支彻底能够继续独立开发
2八、有没有试过最新修改过的分支跟主干上一个很早以前的版本合并后会怎么样。好比主干上有rel01,rel09两个,按理说该跟最新的合09合并,结果跟01合并了,那要怎么恢复啊
答:重和09合并
29.分支较常见的命令:
检出主干版本到本地新建目录
cvs co -r baseline_1_patch 文件名
也能够经过命令
cvs co -d test_old -r baseline_1_patch文件名
提交分支版本
cvs ci -m “fixed bug no.123” ttt.txt
到主干版本所在的目录下,将分支版本合并到最新的主干版本
cvs update -j baseline_1_patch
30、开发人员要提交一个版本到服务器上,但服务器上的版本比他本地的高,他提交不上去,怎么办?
答:有冲突会提示的,没有冲突就可直接提交了,有冲突时updatet而后更改后commit。
3一、如何忽略版本控制?
答:在那个目录下面新建.ignore文件,而后在里面加入忽略版本控制的文件名就能够了
3二、请问你们,为何我在modules文件下设置的项目关联,检出时,有的人能看到,有的人看不到呢?(装的是同一个客户端)
答:若是是更改preference,就是开始path是a,后来又改为b登录,这种状况下是显不出来,先刷新,fresh不行的话就关闭wincvs再开,反正不要更改后登录就好了
3三、如何给文件建个分支
答:这个文件须要先打一个tag,而后在这个tag的基础上建分支,若是大家有了好比是rel_01
那就须要把带有这个tag的标签co到本地
而后cvs tag -b rel_01_branch readme.txt
3四、直接remove一个目录行吗?
目录不空就不行,提示
cvs remove test
cvs server: Removing test
cvs server: file `test/qjq.txt' still in working directory
cvs server: 1 file exists; remove it first
必须先remove文件,现REMOVE目录,而后update一下
3五、CVS update的时候,文件名以前字母含义:
P:经过补丁的方式更新到一个新的版本。
U:经过下载的方式更新到一个新的版本。
M:你本地的文件已经被修改。
C:你的版本和服务器上存储的新版本冲突。你应该经过编辑冲突的文件并汇入你的修改来消除冲突。
这时在当前目录下回多出来一个你修改的备份文件,名为 .#file-version
?:文件既不在远端服务器的文件库中,也不在本地的忽略清单中。
A:文件已被添加,但尚未被提交。
R:文件已被清除,但还有被提交。
3六、要把一个文件夹导入到一个模块的文件夹下,是否是只能用add,不能用导入啊?
答:要导入就得连同他的上一级一块儿
也能够单独导入,但就是须要设置一下路径
3七、wincvs里面的监视器干嘛用的?
监视文件的编辑状态
能够监视那些被高度关注的文件的编辑状态。这个设计遵循发布/订阅模型。当某我的想要修改一个文件时,她(CVS)会发出一个“编辑”的命令,这个命令将会通知那些对这个文件设置了“监视”的开发者。监视通知是经过Email发送的。一样,当文件被提交时也会发送通知。
要监视一个文件,从Trace菜单中选择“Add a Watch”。
3八、为何有时候没法commit,提示一堆这样的信息
cvs server: Up-to-date check failed for `StatInterface.h'
cvs [server aborted]: correct above errors first!
答:这种有引用关系或编译了得最好不用import,若是要导入就以二进制方式导入
我是以前导入过如今作了修改就没法commit
39、CVS支持把最近几天前更新的文件单独提取出来吗?
答:CVS update -D "2 days ago"
40、如何查看文件状态:
cvs status -v 文件名
4一、什么方法可让cvs在导入文件时候自动判别是否以某种格式(如二进制)导入?
答:在CVSROOT/cvswrappers文件里加入那个扩展名须要以二进制导入就能够了,如:*.exe -k'b'便可,能够加你须要的格式 *.avi -k'b',保存后下次导入时cvs按照这个文件里定义的格式进行导入,其它格式:-ku强制unicode,-ko强制不进行关键字扩展,T强制文本
4二、我把 BASELINE_2标签的文件捡出了而后用cvs tag -b BASELINE_2_PATCH 代码
建立分之,不行应该怎么建?
答:cvs tag -b BASELINE_2_PATCH
3、基于LINUX:
一、是否是每一个用户都须要分配一个工做目录呢?
Linux下的应该为每一个用户分配一个工做目录。WinNT的不用。
二、 在Linux下如何配置CVS
加cvs用户组
groupadd cvs
增长cvsroot用户是cvs组的
useradd -g cvs cvsroot
在/etc/inetd.conf 中加入一行
cvspserver stream tcp nowait root /usr/bin/cvs -b /usr/bin --allow-root
加入用户有cvs的使用权
useradd -g cvs test
在.bash_profile文件中加入一行
export CVSROOT=:pserver:test@192.168.1.1:/export
假如cvs装在192.168.1.1上了
/export pserver
其中export是为cvs建仓库的路径
mkdir /export
chown cvsroot export
chgrp cvs export
chmod 764 export
三、 如何锁文件:
cvs admin -L test.txt
能够提交但不起做用
6.1 如何删除下载的文件或目录:
1. 选中下载的某个或多个文件,执行【Remove】命令。
2. 再次选中这些文件,执行【Commit】命令就完成了删除文件的操做。
3. 本质上CVS是不会删除任何文件和目录的,即便是执行了以上操做,删除了某些文件,远端CVS实际执行的是将提交删除的文件放到了一个叫【Attic】的目录下,所以,这些被删除的文件是能够经过必定的方法恢复的。
6.2 如何恢复已经删除的文件或目录:
1. 在执行了【Remove】命令以后恢复文件。
l 【Ctrl+L】直接输入命令cvs add xxxxx,或执行【Add Selection】界面操做。
l 这样就能够直接恢复还未提交的删除文件。
2. 在执行了【Commit】命令以后恢复文件。
l 只能用【Ctrl+L】直接输入命令cvs add xxxxx,这时会获得一个空的文件。
l 选中这个空文件,执行【Update】操做,获得这个文件的实体。
l 再次选中这个文件,执行【Commit】操做,获得这个文件最新版本。
3. 因为CVS系统中本质上不会删除任何目录,所以,谈不上对目录的恢复,可是CVS系统默认状况下是要在用户本机上(如:YCW2000)要删除空目录,所以,能够用以下方法获得已被删除的空目录:cvs checkout -p xxx,也能够在Admin=>Preference的【Globals】页面进行设置。
4. 可见,CVS系统可以保证:只要上传到服务器的文件,不管你怎么在远程进行如何的操做,正常的或非正常的操做,均可以用Administrator登录上去,经过以上的方法找到丢失的文件。除非用户进入到远端服务器,将文件手动删除,那就没办法了:)
6.3 如何获得之前版本的文件:
1. 有时咱们须要获得之前版本的文件,而WinCVS默认方式只传递最新的版本。
2. 选中某个文件,【Ctrl+G】或右键,点按【Graph selection…】,使用默认设置,就能够获得该文件因此版本的图形结构描述。
3. 选中一个版本,右键,点按【Retrieve revision】,就能够获得相应的老版本文件。固然也能够获得最新版本的文件:)
6.4 有时WinCVS会变得异常缓慢,怎么办?
1. 确认安装了WinCVS的机器上没有安装CVSNT服务器端,由于它们使用的版本有可能不一致。
2. 只安装了WinCVS,但之前安装过其它版本的WinCVS,怎么办?
3. 先卸载全部的WinCVS系统,删除安装目录下的残留文件。
4. 打开注册表编辑器,全程查找cvs关键字,找到一个删除一个,一直到找不到为止!!:)
5. 从新安装WinCVS,这个问题基本上就能够解决了,我就是这样解决,不晓得你那里如何?:)