CVS安裝使用速成

2022-12-20 19:42:06 字數 5386 閱讀 9195

結合文件和一些網上資源,折騰了半天終於搞定了cvs,我寫一點非常簡單的"速成"的教材.希望對大家有用.

下面是我的步驟和做法.

1,要求:

root許可權;

cvs軟體,請找到相關的rpm,tgz,deb等包裝上,或者到**原程式編譯安裝,這裡我不準備介紹它的安裝,請參考cvs自身的文件安裝.我使用slackware的tgz包,安裝的命令是#installpkgcvs*.tgz

其他包請參考對應包管理工具的命令.

一定的系統資源,要有一定記憶體(32m就能工作得很好),要一定的磁碟空間,看你的專案的大小和多少而定.2,架設cvs伺服器:

建立cvsroot目錄,因為這裡涉及到使用者對cvsroot裡的檔案讀寫的許可權問題所以比較簡單的方法是建立乙個組,然後再建立乙個屬於該組的帳戶,而且以後有讀寫許可權的使用者都要屬於該組.假設我們建乙個組cvs,使用者名稱cvsroot.建組和使用者的命令如下#groupaddcvs#addusercvsroot

生成的使用者家目錄在/home/cvsroot(根據自己的系統調整)

用cvsroot使用者登陸,修改/home/cvsroot(cvsroot)的許可權,賦與同組人有讀寫的許可權:$chmod771.(或者770應該也可以)

注意:這一部分工作是按照文件說明做的,是否一定需要這樣沒有試驗,我會在做試驗後在以後版本的教程說得仔細一點.如果您有這方面的經驗請提供給我,謝謝.建立cvs倉庫,(仍然是cvsroot使用者),用下面命令:$cvs-d/home/cvsrootinit

以root身份登陸,修改/etc/和/etc/services,分別加入下面一行:在/etc/裡加入:

說明:上面的行是單獨一整行,/usr/bin/cvs應該是你的cvs版本的命令路徑,請根據自己的系統調整./home/cvsroot是你建立的cvsroot的路徑,也請根據上面建立目錄的部分的內容做調整.

在/etc/services裡加入:cvsserver2401/tcp

說明:cvsserver是任意的名稱,但是不能和已有的服務重名,也要和上面修改/etc/那行的第一項一致.這裡我用的是cvs的口令認證方式,cvs還有其他認證方式,我沒有做試驗,如果您有經驗,

請補充,謝謝.

新增可以使用cvs服務的使用者到cvs組:

以root身份修改/etc/group,把需要使用cvs的使用者名稱加到cvs組裡,比如我想讓使用者laser和gumpwu能夠使用cvs服務,那麼修改以後的/etc/group應該有下面這樣一行:

cvs:x:105:laser,gumpwu

在你的系統上gid可能不是105,沒有關係.主要是要把laser和gumpwu用逗號分隔開寫在最後乙個冒號後面.當然,象redhat等分發版有類似linuxconf這樣的工具的話,用工具做這件事會更簡單些.重起inetd使修改生效:#killall-hupinetd

這樣伺服器就設定完成了.我們接著搞客戶端.

3,設定客戶端,如果是linux(或者其他*nix),客戶端和伺服器端的軟體是一樣的,如果是win,mac等平台,請到找相應的客戶端軟體,這裡我先說一下在linux(*nix)裡怎麼做:設定環境變數cvsroot:

$exportcvsroot=:pserver:laser@the_server_name:/home/cvsroot

注意:這裡的pserver是訪問方式,我在上面設定的是口令認證,所以這裡是

pserver,如果你的cvs伺服器設定成別的訪問模式,那麼需要相應修改.laser是可以使用cvs伺服器的使用者名稱,這裡可以根據你的設定修改,我在這個版本設定的是直接使用系統使用者的口令檔案,也就是說laser必須是cvs伺服器上的合法使用者,這裡當然有安全問題,cvs可以設定成為擁有自己的使用者,我將在以後的版本裡面增加這些內容,或者您也可以提供一些補充,或者直接讀cvs的文件.he_server_name是cvs伺服器的名稱或者ip位址,根據你的情況填,/home/cvsroot是你的cvs伺服器的cvsroot目錄,根據你的cvs服務

器設定做修改或者詢問管理員.你可以把這行放到你的shell的profile裡.bash_profile,.profile等)這樣就不用每次敲一長串命令了.

登陸cvs伺服器:

$cvslogin,這時候cvs會問你口令,請把你在cvs伺服器上的口令敲進去,這裡是laser在cvs伺服器上的系統使用者的口令:passwd:******xx

成功登陸後將在你的家目錄建立乙個.cvspass檔案,以後就不用輸入口令了.好,客戶端設定完成,簡單吧.

現在伺服器和客戶端都設定好了,那麼怎麼用呢,我在這裡寫乙個最簡單的(估計也是最常用的)命令介紹:

首先,建立乙個新的cvs專案,一般我們都已經有一些專案檔案了,這樣我們可以用下面步驟生成乙個新的cvs專案:

進入到你的已有專案的目錄,比如叫cvstest:$cdcvstest執行命令:

$cvsimport-m"thisisacvstestproject"cvstestv_0_0_1start說明:import是cvs的命令之一,表示向cvs倉庫輸入專案檔案.-m引數後面的字串是描述文字,隨便寫些有意義的東西,如果不加-m引數,那麼cvs會自動執行乙個編輯器(一般是vi,但是可以通過修改環境變數

editor來改成你喜歡用的編輯器.)讓你輸入資訊,cvstest是專案名稱(實際上是倉庫名,在cvs伺服器上會儲存在以這個名字命名的倉庫裡.)v_0_0_1是這個分支的總標記.沒啥用(或曰不常用.)start是每次import標識檔案的輸入層次的標記,沒啥用.

這樣我們就建立了乙個cvs倉庫了,然後,我們可以把這個測試專案的檔案刪除.試驗一下如何從倉庫獲取檔案.這裡我假設上面的所有客戶端工作你都已經做過了.執行下面的命令:$cvscheckoutcvstest

從倉庫中檢索出cvstest專案的原始檔.

如果你已經做過一次checkout了,那麼不需要重新checkout,只需要進入cvstest專案的目錄,更新一把就行了:$cdcvstest$cvsupdate

一下即可.又或者你不想直接更新,只是想看看有沒有更新的東西,那麼:$cvsstatus

這時後會列印出一長串狀態報告(你可能需要用類似less這樣的命令分頁顯示,或者定向到乙個輸出檔案裡慢慢看.),對專案中的每個檔案有乙份狀態報告,類似這樣:

'somedate'

repositoryrevision:1.2/home/cvsroot/cvstest/

這裡最重要的就是status欄,這裡總共可能有四種狀態:up-to-date:表明你要到的檔案是最新的.

locallymodified:表明你曾經修改過該檔案,但還沒有提交,你的版本比倉庫裡的新.needingpatch:表明有個哥們已經修改過該檔案並且已經提交了!

你的版本比倉庫裡的舊.needsmerge:表明你曾經修改國該檔案,但是偏偏有個不識相的也修改了這個檔案,而且還提交給倉庫了!

如果你只是想保持軟體的同步的話(象我),那麼上面的東西就足夠用了.可是如果多人協作開發專案的話,可就不是了這麼簡單了.當你參加專案,維護檔案時,就需要更多命令,比如說你我都是某nasdaq專案的開發人員:

1,你對某個檔案做了修改,比如說改了加了一行程式:printf("wherecanifindvctocheat!");

改完之後你要把修改提交給倉庫,用命令:$cvscommit-m"addacomplain"或者就是:

$cvscommit-m"worryaboutmoney"讓cvs幫你檢查哪個檔案需要提交.

2,當我開始幹活的時候,可能我先:$cvsstatus

一把,這時候我會看到:

workingrevision:1.1.1.1'somedate'

repositoryrevision:1.2/home/cvsroot/nastaq/

於是我知道有人改了於是我就:$或者乾脆:$cvsupdate

把這個檔案更新為最新版本,然後再幹活.然後提交.

如果這天你修改了加了一行puts("howaboutanotherkindofbragging?");並且提交了,但是這時候我已經$cvsstatus過了,就是說我不知道你的修改.

而我加了一行printf(":$這時候,cvs會告訴我cvscommit:examing.

cvsserver:up-to-datecheckfailedfor''cvs[serveraborted]:correctaboveerrorfirst!

於是我知道有個狗屎在我修改檔案的當口做了提交,於是我$cvsupdate這時cvs會報告:

rcsfile:/home/cvsroot/nasdaq/

告訴你有版本衝突,於是我編輯這時一般檔案裡看起來象這樣:...

printf("youmustshamelesslyandseemsknowingnesstoactasacoo");<<<<<<<

puts("howaboutanotherkindofbragging?");>>>>>>>1.2...

於是我把上面改成:

printf("youmustshamelesslyandseemsknowingnesstoactasacoo");puts("howaboutanotherkindofbragging?");然後

$cvscommit-m"merged"

於是下回你再更新的時候就有新的補釘要打...如此往復,直到完成所有修改.

不過這裡有一些要注意的地方就是刪除程式,如果你刪掉一行對你可能沒有用的程式puts("tobehonest");而我不想刪除(因為我有用),而我不知情地直接:$cvsupdate

了,那麼我的這行程式也完蛋了,所以這裡我們要注意所有開發人員的協調,千萬不要亂刪東西,大不了用

#if0#endif

巨集定義對括起來.實在要刪東西,那最好先標記乙個版本:$cvsta**_0_0_1

然後你可以發布並刪除你自己的工作目錄裡這個版本的檔案(注意:不是刪除倉庫裡的.):

$cvsrelease-dnasdaq

然後你再生成乙個新分支:

$cvsrtag-b-rv_0_0_1v_0_0_1_1nasdaq

然後再建立v_0_0_1_1的分支

$cvscheckout-rv_0_0_1_1nasdaq

編輯並修改這個分支的檔案,這樣的做法比較好.

還有一些命令,比如要增加乙個檔案garbage_china_concept_stocks_list:

$cvsaddgarbage_china_concept_stocks_list

然後還要:

$cvscommitgarbage_china_concert_stocks_list

看起來有點象資料庫裡的事務?的確是這樣.cvs維護著乙個本地的參考檔案(在cvs/entries裡),這樣提交的時候就可以一次地把所有改變放到伺服器端,這樣也更安全.同樣,如果想刪除檔案bankrupted_web_site:

$rmbankrupted_web_site

好了,上面所有的東西,估計就是我們用cvs時80%情況下用的命令和內容,包括檔案的更新,提交,衝突的解決,分支的派生,增刪檔案等.實際上cvs的功能之強大,遠遠超出我在這裡描述的內容,我這個"速成"也就管不了太多了,希望隨著時間的推移,我們能夠更加有效地使用cvs.

安裝預算員入門速成筆記

第一章管道施工圖識讀 1.設計規範要求,暖氣支管不得小於dn20。2.保溫常規做法 給水 防結露保溫,熱水 保溫,消防 不保溫,冷凍水 連閥門都需保溫,冷卻水 按設計要求,未要求可以不作。一般吊頂裡的管道均需保溫。給水 暗敷防結露保溫 明敷穿越門廳 臥室和客廳過門處必須做防結露保溫。排水 暗敷做防結...

快速成交培訓方案,手機行業使用

快速成交培訓資料 在大型節假日,我們的銷售精英需要整裝待發,參加這場沒有硝煙的戰爭。在乙個大型節假日,我們需要準備的有很多,也必須有乙個系統化的培訓,補充我們的 彈藥 提高我們的成交速度,從而提公升個人銷量業績,達到門店整體提公升。一,大型節假日前,我們需要準備的工作 1,專業的產品知識 更專業的產...

Serv U安裝使用

一 安裝 雙擊檔案,圖示如下所示 然後在出現的安裝步驟中一直點選next,在第三步的時候有個license agreement的面板,在下面的方框內打勾後再點選下一步 點選browse按鈕選擇安裝路徑,一般使用預設的路徑,點選next 之後每一步都點選next 安裝完成後,可以使用 程式進行漢化,漢...