codefans

          導(dǎo)航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          程序設(shè)計鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          安裝和使用CVS

          簡介
          CVS 是 Concurrent Version System(并行版本系統(tǒng))的縮寫,用于版本管理.如果大家曾經(jīng)參與過多人協(xié)作開發(fā)的項(xiàng)目,大家肯定有這樣的痛苦經(jīng)歷:由于多個人同時修改同一個文件, 自己辛辛苦苦修改的程序被別人徹底刪除了.另外,如果你的軟件/程序已經(jīng)發(fā)布了三個版本, 而這時候用戶需要你修改第二個版本的東西,也許你會因?yàn)橹槐A袅俗钚掳姹径纯蘖魈椤_€有就是你對程序做了一些修改,但是修改很少,你只想給遠(yuǎn)方的同事發(fā)一個兩個版本之間的差別文件,這樣可以免于郵箱不夠大,網(wǎng)速太慢之類的問題.為了解決類似這樣的問題,以及諸如生成補(bǔ)丁文件,歷史版本修改等,一幫黑客(褒義)在原先 Unix 體系里很成熟的 SCCS 和 RCS 的基礎(chǔ)上,開發(fā)了 CVS。(SCCS:Source Code Control System,RCS:Revision Control System)。
          CVS 的基本工作思路是這樣的:在一臺服務(wù)器上建立一個倉庫,倉庫里可以存放許多不同項(xiàng)目的源程序。由倉庫管理員統(tǒng)一管理這些源程序.這樣,就好象只有一個人在修改文件一樣.避免了沖突.每個用戶在使用倉庫之前,首先要把倉庫里的項(xiàng)目文件下載到本地。用戶做的任何修改首先都是在本地進(jìn)行,然后用 cvs 命令進(jìn)行提交,由 cvs 倉庫管理員統(tǒng)一 修改.這樣就可以做到跟蹤文件變化,沖突控制等等.
          由于 CVS 是典型的 C/S 結(jié)構(gòu)的軟件,因此它也分成服務(wù)器端和客戶端兩部分。不過大多數(shù)CVS 軟件都把它們合二為一了。我們這里就分別從服務(wù)器和客戶端的角度討論cvs的使用。

          Cvs服務(wù)器安裝

          首先確保系統(tǒng)安裝有cvs:
          [root@mail xinetd.d]# rpm -qa|grep cvs
          cvs-1.11.1p1-3
          如果命令輸出類似于上面的輸出則說明系統(tǒng)已經(jīng)安裝有cvs,否則就需要從安裝光盤中安裝cvs的rpm包。

          一 創(chuàng)建CVS屬主用戶:
          # useradd -d /cvsroot cvs
          # chmod 771 /cv sroot

          二、建立CVS倉庫(初始化cvs)

          # su cvs
          $ cvs -d /cvsroot init
          $exit
          #

          四、啟動cvs服務(wù)器

          在/etc/xinetd.d/目錄下創(chuàng)建文件cvspserver,內(nèi)容如下:
          # default: on
          # description: The cvs server sessions;

          service cvspserver
          {
          socket_type = stream
          wait = no
          user = root
          server = /usr/bin/cvs
          server_args = -f --allow-root=/cvsroot pserver
          log_on_failure += USERID
          only_from = 192.168.0.0/24
          }
          其中only_from是用來限制訪問的,可以根據(jù)實(shí)際情況不要或者修改。
          修改該文件權(quán)限:
          # chmod 644 cvspserver
          然后重新啟動xinetd:
          # /etc/rc.d/init.d/xined restart
          然后察看cvs服務(wù)器是否已經(jīng)運(yùn)行:
          [root@mail xinetd.d]# netstat -lnp|grep 2401
          tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
          則說明cvs服務(wù)器已經(jīng)運(yùn)行。

          五、創(chuàng)建用來訪問cvs的用戶

          前面創(chuàng)建的cvs用戶是cvs倉庫管理用戶,而為了讓用戶訪問則還需要一個訪問用戶:
          # useradd cvspub
          # usemod -G cvs cvspub
          這里添加了一個用戶cvspub,并且將該用戶添加到cvs組中。

          六、管理cvs服務(wù)器

          管理 cvs 服務(wù)器.服務(wù)器可以用了,現(xiàn)在大家最關(guān)心的就是如何管理服務(wù)器,比如,我想讓一些人有讀和/或?qū)?CVS 倉庫的權(quán)限,但是不想給它系統(tǒng)權(quán)限怎么辦呢?不難,cvs初始化結(jié)束以后,在管理員用戶(這里是cvs用戶)的主目錄里有一個 CVSROOT 目錄,這個目錄里有三個配置文件:passwd, readers, writers。我們可以通過設(shè)置這三個文件來配置 CVS 服務(wù)器,下面分別介紹這幾個文件的作用:
          passwd:cvs 用戶的用戶列表文件,它的格式很象 shadow 文件:
          {cvs 用戶名}:[加密的口令]:[等效系統(tǒng)用戶名]
          如果你希望一個用戶只是 cvs 用戶,而不是系統(tǒng)用戶,那么你就要設(shè)置這個文件,剛剛安裝完之后這個文件可能不存在,你需要以cvs管理員身份(su cvs)用戶手工創(chuàng)建,當(dāng)然要按照上面格式;
          第二個字段是該用戶的加密口令,就是用 crypt (3) 加密的,你可以自己寫一個程序來做加密,也可以用兩個偷懶的方法:先創(chuàng)建一個系統(tǒng)用戶,名字和 cvs 用戶一樣,口令就是準(zhǔn)備給它的 cvs 用戶口令,創(chuàng)建完之后從 /etc/shadow 把該用戶第二個字段拷貝過來,然后 再把這個用戶刪除.這個方法對付數(shù)量少的用戶比較方便,人一多就不合適了,而且還有沖突條件(race condition)的安全隱患,還要 root 權(quán)限,實(shí)在不怎么樣,不過權(quán)益之計而已;另外一個方法就是利用apche的htpasswd命令創(chuàng)建passwd用戶,添加用戶只需要htpasswd passwd username即可添加用戶到passwd文件中,不過需要在文件中對應(yīng)行的最后添加一個":"冒號和對應(yīng)的等效系統(tǒng)用戶名;最好的就是自己編寫一個程序了來生成這個passwd文件了。
          第三個字段就是等效系統(tǒng)用戶名,實(shí)際上就是賦與一個 cvs 用戶一個等效的系統(tǒng)用戶的權(quán)限,看下面的例子你就明白它的功能了。
          readers:有 cvs 讀權(quán)限的用戶列表文件,就是一個一維列表。在這個文件中的用戶對 cvs
          只有讀權(quán)限。
          writers:有 cvs 寫權(quán)限的用戶的列表文件,和 readers 一樣,是一個一維列表。在這個文件中的用戶對 cvs 有寫權(quán)限。
          上面三個文件在缺省安裝的時候可能都不存在,需要我們自己創(chuàng)建,好吧,現(xiàn)在還是讓我們用一個例子來教學(xué)吧.假設(shè)我們有下面幾個用戶需要使用 cvs:
          cvsuser1, cvsuser2, henry, betty, anonymous
          其中 laser 和 gumpwu 是系統(tǒng)用戶,而henry, betty, anonymous 我們都不想給系統(tǒng)用戶權(quán)限,并且 betty 和 anonymous 都是只讀用戶,而且 anonymous 更是連口令都沒有。
          然后編輯 cvs 管理員家目錄里 CVSROOT/passwd 文件,加入下面幾行:

          laser:$xxefajfka;faffa33:cvspub
          gumpwu:$ajfaal;323r0ofeeanv:cvspub
          henry:$fajkdpaieje:cvspub
          betty:fjkal;ffjieinfn/:cvspub
          anonymous::cvspub
          注意:上面的第二個字段(分隔符為 :)是密文口令,你要用程序或者用我的土辦法生成。
          編輯 readers 文件,加入下面幾行:
          anonymous
          betty
          編輯 writer 文件,加入下面幾行:
          laser
          gumpwu
          henry
          這樣就 ok 了,你再用幾個用戶分別登陸測試,就會發(fā)現(xiàn)一切都 ok 了。這里面的原理和說明我想就不多說了,其實(shí)很簡單,和系統(tǒng)管理用戶的概念是一樣的。

          七、建立新的CVS項(xiàng)目

          一般我們都已經(jīng)有一個或多個項(xiàng)目了,這樣我們可以用下面步驟生成一個新的CVS項(xiàng)目。
          將一個工程文件置于CVs中進(jìn)行版本控制,在CVS 術(shù)語中稱作導(dǎo)入(import)。從名字上就可以看出,在導(dǎo)入前需要為此作些準(zhǔn)備工作。
          輸入操作的基本要求是有個"干凈"的目錄結(jié)構(gòu)。"干凈"的意思是不需要版本控制的文件都被移走了(如編譯生成的文件,備份文件等等)。如果工程已經(jīng)開始一段時間了,這就顯得很重要。在目錄中也許有些是不打算將其置于版本控制下的文件,但是又想將他們放在這里,這種情況下,你要在輸入之前將它們移走,然后再移回來。
          注意的是CVS 認(rèn)為空目錄是不存在的。如果想增加一個既不包含文件又不包含子目錄的目錄,需要在其下創(chuàng)建一個啞文件。建議你創(chuàng)建一個名為 README.txt 的文件,其內(nèi)容為對目錄的簡要說明。
          進(jìn)入到已有項(xiàng)目的目錄,比如叫 cvstest:
          $cd cvstest
          運(yùn)行命令將項(xiàng)目文件導(dǎo)入到cvs倉庫中:
          $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start
          說明:import 是cvs的命令之一,表示向cvs倉庫輸入項(xiàng)目文件.
          -m參數(shù)后面的字串是描述文本,對項(xiàng)目進(jìn)行描述,如果不加 -m 參數(shù),那么cvs會自動運(yùn)行一個編輯器(一般是vi,但是可以通過修改環(huán)境變量EDITOR來改成你喜歡用的編輯器)讓你輸入信息,cvstest 是項(xiàng)目名稱(實(shí)際上是倉庫名,在CVS服務(wù)器上會存儲在以這個名字命名的倉庫里)
          v_0_0_1是這個分支的總標(biāo)記.沒啥用(或曰不常用)
          start 是每次 import 標(biāo)識文件的輸入層次的標(biāo)記,沒啥用。
          這樣我們就建立了一個CVS倉庫了,然后,我們可以把這個測試項(xiàng)目的文件刪除,試驗(yàn)如何從倉庫獲取文件這會在后面的客戶端文章進(jìn)行說明。

          在Win2k上安裝和使用CVS
          1.準(zhǔn)備有關(guān)軟件:
          從 www.cvsnt.org 下載服務(wù)器 cvs-1.10.8NT.exe.zip
          從 www.wincvs.org 下載客戶端 WinCvs11b16.zip
          用winzip把cvs-1.10.8NT.exe.zip解壓到d:cvs。
          解壓并安裝wincvs.
          2.把路徑 d:cvs 加到path環(huán)境變量中。
          具體方法:點(diǎn)選"我的電腦",單擊右鍵,選屬性,點(diǎn)環(huán)境變量按鈕。
          3.建立CVS存儲目錄。
          打開一個dos窗口,鍵入"cvs -d :local:d:cvsroot init",然后你會發(fā)現(xiàn)d:cvs下面多了一個root子目錄。
          4.注冊CVS服務(wù)
          在dos窗口中,鍵入"ntservice -i d:cvsroot",屏幕顯示"CVS NT Service Installed successfully",打開控制面板中的服務(wù),你會發(fā)現(xiàn)多了一個"CVS NT Service"服務(wù)
          用"net start cvs"啟動cvs服務(wù)。 用"net stop cvs"關(guān)閉cvs服務(wù)。
          5.設(shè)置密碼
          新建一個空白的passwd文件,放到d:cvsrootcvsroot目錄下。用pwgen.exe生成密碼。把用戶名和密碼寫到passwd文件,例如:test:OuIgxgsUZH48g
          6.使用wincvs
          選Admin->Perferences,設(shè)CVSROOT為":pserver:test@server:d:cvsroot",server為作為服務(wù)器的計算機(jī)的名稱。test為用戶名。
          7.登陸
          選Admin->login,輸入密碼登陸。
          8.導(dǎo)入模塊
          假設(shè)要管理的代碼已經(jīng)存在于c:source目錄,選彈出菜單上的import module,選擇目錄c:source,輸入模塊名"test",wincvs就會把該目錄導(dǎo)入到模塊test中。
          9.導(dǎo)出模塊
          選Create->checkout module,輸入模塊名和相應(yīng)的目錄就可以了。
          10。修改文件
          選中要修改的文件,點(diǎn)修改鈕(筆圖標(biāo))。然后修改文件,最后選彈出菜單上的commit selection,修改就被提交了。

          CVS NT服務(wù)器安裝指南
          下載地址:http://www.cvsnt.org
          運(yùn)行 cvsnt_1.11.1.2.exe
          點(diǎn)兩次“Next”跳過“Welcome”界面開始安裝
          點(diǎn)“Yes”接受License
          點(diǎn)“Next”用默認(rèn)的Typical安裝
          選“Yes”并點(diǎn)“Finish”,重新啟動

          到桌面,在“我的電腦”按右鍵,點(diǎn)“屬性”
          點(diǎn)“高級”,點(diǎn)“環(huán)境變量”
          選擇“系統(tǒng)變量”中的Path,點(diǎn)“編輯”
          在變量值后加“;C:Program FilesCVS for NT”(引號不要加入)
          點(diǎn)“確定”
          再“確定”

          進(jìn)入控制面板,雙擊“CVS for NT”
          點(diǎn)“Install”安裝CVSNT服務(wù)
          Install按鈕會變無效,Uninstall變有效
          點(diǎn)“Add”,輸入“d:cvsroot”,點(diǎn)“OK”
          會提問是否創(chuàng)建目錄,回答“是”
          點(diǎn)“Start”啟動CVSNT服務(wù)

          在d:cvsrootCVSROOT目錄下創(chuàng)建一個文件名為passwd的文件(沒有擴(kuò)展名)
          (怎么創(chuàng)建沒有擴(kuò)展名的文件:
          點(diǎn)資源管理器菜單“工具”->“文件夾選項(xiàng)”
          點(diǎn)“文件類型”
          找到并選中“TXT 文本文檔”,點(diǎn)“高級”
          選中“始終顯示擴(kuò)展名”,點(diǎn)“確定”,然后“關(guān)閉”)

          在d:cvsrootCVSRTOO下新建文本文件
          編輯該文件,把下面三行
          user1:user1encryptedpassword (加密密碼是用CVSNT帶的工具“Generate Passwords”生成的,安裝后菜單里有)
          user2:user2encryptedpassword
          user3:user3encryptedpassword
          加入,保存退出,然后把該文件改名為passwd(把擴(kuò)展名去掉)

          加3個windows用戶
          user1密碼同上面設(shè)的
          user2密碼同上面設(shè)的
          user3密碼同上面設(shè)的


          安裝wincvs(下載地址:http://www.cvsgui.org)后運(yùn)行wincvs

          點(diǎn)“Admin”->Preferences
          CVSROOT 改為 user1@myservername:d:cvsroot
          Authentication 選擇 "passwd" file on the cvs server
          Use vesion 選擇 cvs 1.10 (Standard)

          然后“Admin”->“Login”,成功的返回碼為0
          然后可以Import一個module

          然后可以checkout這個module,如果checkout到同一個目錄,要把原來的目錄改名或刪除
          點(diǎn)Create->Checkout module
          module name 填 mymodulename
          Local folder如 d:user1
          在Globals頁里面把 Checkout read-only 不選中
          其它的不管,點(diǎn)“確定”即可

          checkout之前如果沒有l(wèi)ogin,必須先login一次,除非工作目錄,否則不需要重新login

          posted on 2005-10-05 13:15 春雷的博客 閱讀(125) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 城步| 建平县| 桂阳县| 东丽区| 汉沽区| 蒲江县| 鹤山市| 沙河市| 霞浦县| 平塘县| 秀山| 丰城市| 临澧县| 蒙自县| 天津市| 临西县| 建德市| 铁岭市| 安陆市| 虞城县| 开封县| 无极县| 修文县| 湛江市| 大洼县| 阿坝县| 巴塘县| 汾阳市| 宜君县| 兴国县| 馆陶县| 烟台市| 伊通| 溧水县| 沂源县| 日照市| 唐海县| 乌拉特前旗| 日喀则市| 洛南县| 元阳县|