您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
配置管理工具CVS簡單教程
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/12/4 16:57:47 ] 推薦標簽:

登陸CVS服務(wù)器:
 

$ cvs login,這時候 cvs 會問你口令,請把你在 CVS 服務(wù)器上的口令敲進去,這里是 laser 在 CVS服務(wù)器上的系統(tǒng)用戶的口令:
 Passwd:xxxxxxxx

成功登陸后將在你的家目錄建立一個 .cvspass 文件,以后不用輸入口令了.

好,客戶端設(shè)置完成,簡單吧.
管理 cvs 服務(wù)器

服務(wù)器可以用了,現(xiàn)在大家關(guān)心的是如何管理服務(wù)器,比如,我想讓一些人有讀和/或?qū)?CVS 倉庫的權(quán)限,但是不想給它系統(tǒng)權(quán)限怎么辦呢?


不難,在 cvs 管理員用戶(在我這里是 cvsroot 用戶)的家目錄里有一個 CVSROOT 目錄,這個目錄里有三個配置文件,passwd, readers, writers,我們可以通過設(shè)置這三個文件來配置 CVS 服務(wù)器,下面分別介紹這幾個文件的作用:

passwd:cvs 用戶的用戶列表文件,它的格式很象 shadow 文件:

{cvs 用戶名}:[加密的口令]:[等效系統(tǒng)用戶名]

如果你希望一個用戶只是 cvs 用戶,而不是系統(tǒng)用戶,那么你要設(shè)置這個文件,剛剛安裝完之后這個文件可能不存在,你需要以 cvs 管理員用戶手工創(chuàng)建,當然要按照上面格式,第二個字段是該用戶的加密口令,是用 crypt (3) 加密的,你可以自己寫一個程序來做加密,也可以用我介紹的偷懶的方法:先創(chuàng)建一個系統(tǒng)用戶,名字和 cvs 用戶一樣,口令是準備給它的 cvs 用戶口令,創(chuàng)建完之后從 /etc/shadow 把該用戶第二個字段拷貝過來,然后再把這個用戶刪除.這個方法對付數(shù)量少的用戶比較方便,人一多不合適了,而且還有沖突條件(race condition)的安全隱患,還要 root 權(quán)限,實在不怎么樣.不過權(quán)益之計而已.寫一個小程序并不難,可以到 linuxforum 的編程版搜索一下,有個朋友已經(jīng)寫了一個貼在上面了.

第三個字段是等效系統(tǒng)用戶名,實際上是賦與一個 cvs 用戶一個等效的系統(tǒng)用戶的權(quán)限,看下面的例子你明白它的功能了.

readers:有 cvs 讀權(quán)限的用戶列表文件.是一個一維列表.在這個文件中的用戶對 cvs只有讀權(quán)限.

 

writers:有 cvs 寫權(quán)限的用戶的列表文件.和 readers 一樣,是一個一維列表.在這個文件中的用戶對 cvs 有寫權(quán)限.

上面三個文件在缺省安裝的時候可能都不存在,需要我們自己創(chuàng)建,好吧,現(xiàn)在還是讓我們用一個例子來教學吧.假設(shè)我們有下面幾個用戶需要使用 cvs:

laser, gumpwu, henry, betty, anonymous.

其中 laser 和 gumpwu 是系統(tǒng)用戶,而 henry, betty, anonymous 我們都不想給系統(tǒng)用戶權(quán)限,并且 betty 和 anonymous 都是只讀用戶,而且 anonymous 更是連口令都沒有.那么好,我們先做一些準備工作,先創(chuàng)建一個 cvspub 用戶,這個用戶的責任是代表所有非系統(tǒng)用戶的 cvs 用戶讀寫 cvs 倉庫.

#adduser
...

然后編輯 /etc/group,令 cvspub 用戶在 cvs 組里,同時把其它有系統(tǒng)用戶權(quán)限的用戶加到 cvs 組里.(見上文)

然后編輯 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 了.這里面的原理和說明我想不多說了,其實很簡單,和系統(tǒng)管理用戶的概念是一樣的.
 

現(xiàn)在服務(wù)器和客戶端都設(shè)置好了,那么怎么用呢,我在這里寫一個簡單的(估計也是常用的)命令介紹:

首先,建立一個新的CVS項目,一般我們都已經(jīng)有一些項目文件了,這樣我們可以用下面步驟生成一個新的CVS項目:

進入到你的已有項目的目錄,比如叫 cvstest:
$cd  cvstest
運行命令:
$cvs import -m "this is a cvstest project" cvstest     v_0_0_1     start
說明:import 是cvs的命令之一,表示向cvs倉庫輸入項目文件.
              -m參數(shù)后面的字串是描述文本,隨便寫些有意義的東西,如果不加 -m 參
數(shù),那么cvs會自動運行一個編輯器(一般是vi,但是可以通過修改環(huán)境變量
EDITOR來改成你喜歡用的編輯器.)讓你輸入信息,
             cvstest 是項目名稱(實際上是倉庫名,在CVS服務(wù)器上會存儲在以這個名字
命名的倉庫里.)
             v_0_0_1是這個分支的總標記.沒啥用(或曰不常用.)
             start 是每次 import 標識文件的輸入層次的標記,沒啥用.
這樣我們建立了一個CVS倉庫了,然后,我們可以把這個測試項目的文件刪除.試驗一下如何從倉庫獲取文件.這里我假設(shè)上面的所有客戶端工作你都已經(jīng)做過了.

運行下面的命令:

   $cvs checkout cvstest
從倉庫中檢索出cvstest項目的源文件.
如果你已經(jīng)做過一次checkout了,那么不需要重新checkout,只需要進入cvstest項目的目錄,更新一把行了:

$cd cvstest
$cvs update一下即可.又或者你不想直接更新,只是想看看有沒有更新的東西,那么:
$cvs status
這時后會打印出一長串狀態(tài)報告(你可能需要用類似less這樣的命令分頁顯示,或者定向到一個輸出文件里慢慢看.),對項目中的每個文件有一份狀態(tài)報告,類似這樣:
===================================================================
File: foo.c             Status: Up-to-date

   Working revision:    1.1.1.1 'Some Date'
   Repository revision: 1.2     /home/cvsroot/cvstest/foo.c,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

這里重要的是 Status 欄,這里總共可能有四種狀態(tài):
Up-to-date:表明你要到的文件是新的.
Locally Modified:表明你曾經(jīng)修改過該文件,但還沒有提交,你的版本比倉庫里的新.
Needing Patch:表明有個哥們已經(jīng)修改過該文件并且已經(jīng)提交了!你的版本比倉庫里的舊.
Needs Merge:表明你曾經(jīng)修改過該文件,但是偏偏有個不識相的也修改了這個文件,而且還提交給倉庫了!

如果你只是想保持軟件的同步的話(象我),那么上面的東西足夠用了.可是如果多人協(xié)作開發(fā)項目的話,可不是了這么簡單了.當你參加項目,維護文件時,需要更多命令,比如說你我都是某 nasdaq 項目的開發(fā)人員:

1,你對某個文件做了修改,比如說改了ceo.c,加了一行程序:printf("where can I find VC to cheat!");
改完之后你要把修改提交給倉庫,用命令:
$cvs commit -m "add a complain" ceo.c
或者是:
$cvs commit -m "worry about money"
讓cvs幫你檢查哪個文件需要提交.

2,當我開始干活的時候,可能我先:
$cvs status

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd