一、客戶端的配置
啟動pagent,添加私鑰;啟動wincvs,配置好preference選項(admin菜單里)。
詳情請見CVS客戶端配置。
讓我悄悄告訴你,在preference里好將“globe”選項卡中的“checkout read-only”置空,這可是tianyuan的秘技:)
二、初始化
如果你已經(jīng)連上服務(wù)器,做過checkin、checkout等工作,可以略過這一步。
選擇creat->creat a new reporsitory,無需更改默認(rèn)配置,確認(rèn)即可。
如果一切正常,會在窗體下部的output窗口顯示如下信息:
cvs -d :ext:monkey@monkeygro:/cvs/hrsystem init
*****CVS exited normally with code 0*****
第二行如果不是以“0”結(jié)尾,出現(xiàn)其他數(shù)字,表明出錯了。
三、上傳文件(checkin)
窗體中部左邊有一個explore頁,點擊它,選擇你準(zhǔn)備上傳的文件夾;點擊菜單欄的creat->import module from selection,會跳出一個import filter窗體。如果你的文件里有錯誤,import filter窗體里會有error或warn標(biāo)志,如果真是這樣,你好還是先看一看有何問題。
下一個跳出的窗體是import setting,在select the module name and path on the remote server里面填上一個名稱,當(dāng)你的文件傳上服務(wù)器后,cvs服務(wù)器里會以這個名稱建立一個代碼庫,存放剛才傳上來的文件。
請記住,下拉框并沒有什么神奇的功能,它只能記住你上次填進(jìn)去的東西。
四、下載文件(checkout)
經(jīng)過上一步操作,你在服務(wù)器里有了源代碼,所有的開發(fā)者可以開始工作了。
當(dāng)然,開發(fā)者需要先下載一個拷貝到本地才能修改它。
1. 建立本地工作目錄
在自己的硬盤上新建一個目錄,很多人都取名為“work”,表示這是工作目錄。其實,這只是一個好習(xí)慣而已。
2. 下載文件
選擇creat->checkout module,出現(xiàn)的窗體是checkout setting,在module name and path on the server中填寫你在第三步(上傳文件)中,上傳到服務(wù)器中的模塊名稱。如果你記不住第三步你填寫了什么,你可以先看一看本文的第九步。
五、修改與提交
1、edit與uedit命令
現(xiàn)在,你可以準(zhǔn)備修改源代碼了。不過,當(dāng)你到自己的本地工作目錄中,可能會發(fā)現(xiàn)下載回來的文件都是只讀的,這是因為你在第一步中preference中,沒有將checkout read-only置空。
在Wincvs中,你到窗體中部的module頁中,找到自己準(zhǔn)備修改的文件,在右邊的瀏覽窗口里選中它,然后選擇菜單欄中的trace->edit selection,可以將不可讀的文件置為可讀。
2、更新(update)
你喜歡那一種開發(fā)工具?VB、VC、Java還是Delphi?現(xiàn)在你可以開始你異常熟悉的代碼開發(fā)工作了。
無論你用那種工具,當(dāng)你修改了工作目錄中的文件后,在Wincvs里,你可以看到這個文件變成紅色了。
有一個好習(xí)慣是,在你準(zhǔn)備提交到服務(wù)器之前,先更新一下,因為有可能別的開發(fā)者在你修改這個文件的同時,也可能也修改了這個文件,這有可能會存在沖突,我們總是在提交前先處理沖突。
更新的操作很簡單:選中你修改了的文件,在菜單欄中選擇modify,一般情況下,無需修改默認(rèn)選項。
處理沖突請看本文第十節(jié)沖突處理。
六、標(biāo)記(tag)
標(biāo)記是版本控制中很重要的功能。
除了通常的作用,它還可以標(biāo)記修改者,讓大家知道,是誰提交了一個新版本。
在Wincvs中選擇準(zhǔn)備標(biāo)記的文件,然后在菜單欄中選擇modify->creat a tag on selection;馬上creat tag setting窗體會出現(xiàn),在new tag name中填入標(biāo)記名即可。
七、分支的管理
我們在這里先詳細(xì)說一下分支的作用。
我們設(shè)計了一個圖書管理系統(tǒng),把1.0版交給了客戶A大學(xué);然后我們繼續(xù)開發(fā),有了新版本1.1版、1.2、1.3......這時A大學(xué)告訴我們,1.0版本有bug,我們很快在1.0版本的源代碼中找到了錯誤所在。
這時候,簡單的解決辦法是給A大學(xué)一個bug patch。你會問,為什么不給客戶新版本?原因很簡單:第一,我們還沒有檢查新穩(wěn)定版本中又無此bug;第二,客戶的系統(tǒng)已經(jīng)運行了一段時間,升級到新版本上可能還會發(fā)生更多新問題。
那么,我們應(yīng)該在1.0版本上建立一個分支,在這個分支上進(jìn)行開發(fā),修改bug ,創(chuàng)建bugpatch,客戶馬上能解決問題了。
然后我們關(guān)起門來,查看新版本上有無此bug;如果有,將分支合并到主版本上,解決新版本的問題。
實際操作如下:在菜單欄的creat->creat a branch,在跳出的creat branch setting窗體上,new branch中,填入你給分支取的名字;在module to fork中填入文件名;請記住,你要在rtag options選項卡中,選中rev./tag/branch,填入版本號。如果你這里不填,生成的分支將會以新版為分叉點。
八、鎖定文件
這可是武漢自由軟件協(xié)會的另一個秘技。
一般而言,在項目小組中,項目經(jīng)理會定期公布新的基礎(chǔ)版本,要求小組成員都在這個基礎(chǔ)版本上進(jìn)行進(jìn)一步開發(fā)。
在實際工作中,總會有些成員提前完成工作,他們提交更改后,新版本會比項目經(jīng)理發(fā)布的基礎(chǔ)版本的version更高。
有時候,某些項目成員會有意無意修改基礎(chǔ)版本,并且指定提交到基礎(chǔ)版本上,如果允許他們提交修改,大家可能都會在一個錯誤的基礎(chǔ)版本工作,后果是不堪設(shè)想的。
鎖定文件的操作如下,菜單欄的admin->comandline,輸入這個命令:
cvs admin -l版本號 文件全名
注意,-l和版本號之間沒有空格。如果你鎖定成功,會有如下提示:
RCS file: /cvs/hrsystem/test/new.txt,v
1.1.2.3 locked
done
*****CVS exited normally with code 0*****
九、文件瀏覽。
1. 文件標(biāo)志瀏覽
2. 通過Web頁面瀏覽
3. 文件對比
十、沖突處理
十一、管理員的工作
1. 協(xié)調(diào)小組,制定代碼管理規(guī)范
2. 及時發(fā)布官方版本信息
3. 充分利用標(biāo)記和分支管理開發(fā)團(tuán)隊