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      郵件: [email protected]

出處: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

/ActiveTcl8.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 列出日期之間的。這裏”<”表示大於等於開始日期,小於結束日期,所以上面命令d2006-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就會告訴他錯誤,因爲某某在哪什麼時候正在編輯這個文件。好了,再說就不叫結束語了,希望這個文檔對大家有所幫助!也歡迎來信交流指正!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章