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,這個問題基本上就能夠解決了,我就是這樣解決,不曉得你那裏如何?:)