2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

windows環(huán)境CVS client使用入門

 伊蓮 2006-09-04

v0.1

created by 曹曉鋼,2002/01/03 last updated by $Author$,$Date$

本文純粹為“入門”性質(zhì),具體深入的命令解釋請參見CVS手冊。

本文首先介紹關(guān)于CVS的基礎(chǔ)知識,然后對于流行的幾種工具單獨給出流程實例。

CVS client使用前必須明白的基本概念

1,CVS

CVS (Cuncurrent Versions System)是基于TCP/IP協(xié)議的版本控制工具,也是Open source界最重要的開發(fā)工具之一。

它原來主要工作在UNIX平臺下,現(xiàn)在在windows平臺上也出現(xiàn)了很多GUI工具。

關(guān)于其由來,發(fā)展,請參閱www.cvshome.org 。

CVS和其他大部分版本控制軟件一樣,是Client/Server結(jié)構(gòu)的。你必須在本地為CVS repository準(zhǔn)備好一個目錄,來和服務(wù)器同步源代碼。

和在Windows 開發(fā)平臺中擁有很大用戶群的Visual Source Safe(VSS)相比,CVS主要由兩個不同之處。

一是VSS依靠服務(wù)器上的一個共享目錄提供服務(wù),每一個client必須能夠訪問這個共享目錄。這也就決定了source safe在TCP/IP環(huán)境下使用很困難。對于分布跨越數(shù)個城市甚至國家的工作小組來說,只有通過VPN才能夠安全的訪問source safe數(shù)據(jù)庫。(SourceGear公司(www.sourcegear.com)發(fā)售名為SourceOffSite的商業(yè)軟件包,US$239 per user,也可以為遠(yuǎn)程用戶提供通過TCP/IP訪問source safe數(shù)據(jù)的能力。) 而CVS依靠TCP/IP連接提供服務(wù),所以它天生就是為了在internet上協(xié)同工作而設(shè)計的。雖然基本的pserver連接安全性不是很高,但是通過使用SSH,可以獲得很高的安全性。

二是CVS反對對文件上鎖的機(jī)制。VSS以及其他很多傳統(tǒng)版本控制工具要求一個文件只能有一個使用者,它必須先checkout聲明編輯文件的獨享權(quán)力,直到checkin為止。但是對于地理上不限制使用者位置的CVS來說,等待一個用戶checkin是一件痛苦的事情,而互相溝通比一個緊密工作的團(tuán)體更困難。CVS采取多個用戶可以同時對一個文件進(jìn)行編輯,然后commit的方式解決這個問題。假設(shè)由于溝通不足出現(xiàn)沖突,使用者必須手工解決沖突之后再進(jìn)行commit。在這種情況下,沖突的開發(fā)者必須努力進(jìn)行足夠的溝通以避免再次沖突。

CVS服務(wù)器可以被配置為把commit記錄自動張貼到新聞組或者開發(fā)者的email信箱中去。注意這些輔助記錄將有助于開發(fā)者之間的合作。

2, repository,module

CVS服務(wù)器上,一個源代碼倉庫被稱為一個repository,一個server上通??梢赃\行多個repository,每個repository都是完全獨立的,可以有不同的用戶列表和訪問規(guī)則。在一個repository之下,文件按照module組織,每一個module就相當(dāng)于一個工程,大致上相當(dāng)于Source safe里面的project。

VSS在你連接上服務(wù)器之后,會列出所有的project。但并不是所有的CVS server都會提供module的列表。事實上,哪些module被公開是由管理員控制的。如果你知道一個被隱藏的module的名字,你仍然可以正常的訪問這個module。

3,CVSROOT

CVS依靠運行在服務(wù)器上的一個服務(wù)程序提供TCP/IP的連接。為了訪問一個CVS數(shù)據(jù)庫,你必須知道你所使用的協(xié)議,服務(wù)器的地址,服務(wù)器提供的Repository的名稱以及你的用戶名和密碼。

有數(shù)種協(xié)議可供選擇。Unix/Linux機(jī)器上的CVS通常使用pserver協(xié)議,這是一種不非常安全的協(xié)議,但是如果你有額外的安全要求,可以通過SSH進(jìn)行增強(qiáng)。除此之外,NT機(jī)器還支持ntserver協(xié)議,它通過主機(jī)的NT用戶表進(jìn)行訪問控制(但是這是在internet上不可用的方法)。kserver和gserver協(xié)議用的比較少,他們依據(jù)Kerboses提供額外的安全保護(hù)。

你有必要知道CVSROOT這個參數(shù)。CVSROOT是一個用":"開始及分隔各個部分的字符串,它包含了協(xié)議、用戶名、服務(wù)器地址和repository名稱。對于用戶來說,CVSROOT就像URL一樣,是訪問一個server的途徑。

一個典型的CVSROOT=:perser:cao@61.155.107.187:/cvs。這里,pserver是協(xié)議名稱,cao是用戶id,61.155.107.187是主機(jī)ip,/cvs是repository的名字。NT主機(jī)的repository一般會采取d:/CVSROOT之類的格式。

另一個例子是:pserver:anonymous@jivesoftware.com:/cvs,這是jivesoftware公司提供的開放源代碼java技術(shù)論壇的CVSROOT。

在windows下使用命令行方式,這個參數(shù)可以通過一個環(huán)境變量使用。在windows 2000/XP系統(tǒng)中,你可以通過在‘My computer‘的properties中選擇advanced,然后選擇‘Enviroment Variables‘來輸入這個環(huán)境變量。

4,checkout,update

為了得到module下面的源代碼,你只需要使用checkout指令。和Visual source safe不一樣,checkout只是取得文件,而非鎖文件。

如果你已經(jīng)有了本地文件,為了和server保持同步,你需要進(jìn)行update操作。update會自動把server上的新內(nèi)容取到本機(jī)來,如果你本地文件進(jìn)行過了改動,它會幫您做合并工作。

checkout 和 update既可以針對一個特定的文件,也可以針對一個目錄或者整個module。

5,  commit

如果你對本地代碼做了任何修改,或者增加一個文件,刪除一個文件,每當(dāng)你需要把你的改變提交到server上的時候,你就需要做commit動作。假設(shè)兩個人都在本地修改了同一個文件,那么他們就像在進(jìn)行一個競賽,如果你快,那么你贏了。后commit的人將被server拒絕,不得不合并你的修改再次提交。

commit既可以針對一個特定的文件,也可以針對一個目錄或者整個module。

6,  revision

Revision是指每一個文件的版本信息。當(dāng)你第一次增加一個文件到repository的時候,它會有一個初始revision是1.1,以后每次提交,就會增加到1.2,1.3...

在一個branch中的文件,有相對于這個branch的版本號。如果你對文件作了tag,那么你會看到revision變成1.1.1.1的形式。具體的含義我們在branch和tag的時候描述。

7,branch

Branch是一棵正常生長的代碼樹中的枝杈。開始的時候,任何一個module都有一個主枝被稱為‘HEAD‘。

一個branch最終要么被合并到主干中去,要么被結(jié)束。branch通常用來debug,如果這個bug被fix了,修改bug的代碼應(yīng)該被合并到主枝上去。一個branch也可能經(jīng)歷多次與主枝的合并。

8,  tag

Tag用來進(jìn)行標(biāo)示必要的信息。當(dāng)您進(jìn)行一次公開發(fā)布之前,您有必要對主枝標(biāo)示"release 1.0"。這樣您以后就可以隨時回到這個版本。

//to do: 請完善這里的描述

 

CVS命令行

在得到CVSROOT和你的口令之后,你就可以試著登陸了。

首先,由于其他所有的GUI工具都是基于CVS基本協(xié)議的,而且他們可能會提供CVS的命令行或者等價形式作為顯示的一部分,所以你應(yīng)該對命令行操作有所了解。如果你還沒有一個cvs。exe的命令行程序,從www.cvsnt.org你可以得到一個cvsnt的下載連接,其中就包含了一個命令行的cvs.exe程序。我們先從它開始(為了作為一個client使用,你不需要安裝cvsnt的server組件)。CVSNT的cvs.exe是專門為windows編寫的,你需要把cvs.exe放在你的path里面。

1.進(jìn)入命令行方式。
                        

和VSS一樣,你也需要在本地有一個工作目錄對應(yīng)于一個repository。假設(shè)這個目錄是‘d:\works\sandbox‘。請切換到這個目錄。

輸入"cvs"。你會看到:

這些提示信息告訴您關(guān)于cvs的基本語法。cvs后面跟著的是全局參數(shù),然后是命令,最后是命令的參數(shù)。

2.login

正確的login不會有任何輸出,否則會告訴你錯誤原因。

cvs

3.下面我們看看這個CVS server中有哪些module。

4.假設(shè)現(xiàn)在我們工作的項目是projectX,下面我們需要得到它下面的全部文件。

現(xiàn)在讓我們看一下我們得到了什么。

在d:/works/sandbox目錄下,你可以看到有一個projectX目錄。這就是你得到的所有文件。

這個目錄下你會發(fā)現(xiàn)一個叫做 CVS的目錄。危險!請不要刪除這個目錄,或者改名,或者改動其中的任何文件,除非你知道你在做什么。這個目錄是CVS的控制目錄。如果你用過source safe,你一定很熟悉。scc這個文件,CVS目錄的作用就和這個控制文件一樣,都是用來記錄你訪問服務(wù)器的參數(shù)。

這里我們需要解釋一下cvs和VSS的名詞差別。在VSS中,checkout意味著你將獲得一個文件的修改權(quán),而cvs中checkout的這個含義取消了,僅僅指取得文件的新版本。很多cvs server會有一個anonymous用戶,他只有checkout權(quán)限,也就意味著它只讀。

 

                        

5.讓我們試著加入一個文件:

在d:/works/sandbox/projectX下,新建一個文件newfile.txt,

然后,在這個目錄下執(zhí)行:

你需要commit它才能被sever接受。

一個notepad窗口彈出請您輸入注釋。

這是commit完成的結(jié)果。現(xiàn)在的版本號是1.1。

6.好了,現(xiàn)在假設(shè)您需要改一下這個文件的內(nèi)容。

CVS可以幫助您比較現(xiàn)在您的版本和repository中的版本有什么不同。

好了,現(xiàn)在您可以提交您的新文件。

CVS會幫您保留您的各個版本。在commit之后,現(xiàn)在我們來看一看各個版本的history。

7.最后,為了完成這個試驗,請把這個newfile文件刪去。

我們現(xiàn)在認(rèn)識了一些最基本的CVS入門級指令。

其實CVS是非常強(qiáng)大的,我們并沒有用到一些更復(fù)雜的功能,請參閱cvs的手冊來得到更為詳盡的幫助。

在多人同時開發(fā)的時候,沖突有時候也是不能避免的。

// to do:加入處理 cvs update和處理merge的部分。
                        

更多的資料請參閱Karl Fogel的《Open Source Development With CVS》一書。該書的中文譯本《CVS開源軟件開發(fā)技術(shù)》由機(jī)械工業(yè)出版社出版(ISBN 7-111-08891-3/TP.1885,人民幣35.00)。按此連接到華儲網(wǎng)上電腦書店訂購http://www./asp/book/brow.asp?lbbh=B99112091

用MFC編寫的windows平臺CVS圖形界面 --- WinCVS(未完成)

好了,就像黑白電影總是會過渡到彩色電影一樣(正巧,就像現(xiàn)在發(fā)生在移動電話市場的情況一樣),cvs命令行之外,一些圖形界面的程序被編寫出來簡化你的操作。由于CVS的協(xié)議是公開的,所以,只要你的編程語言支持socket通訊,你也可以寫一個。這個世界上有好幾個這樣的嘗試,WinCVS就是其中一個。它是在win32平臺上用MFC開發(fā)的。從我自己的體會來看,這是一個有益的嘗試,但是還遠(yuǎn)遠(yuǎn)稱不上精美。和VSS和source off site,borland的tram source,以及PVCS的界面比較,這個windows界面還顯得很粗糙,差強(qiáng)人意。

但是我們還是可以從它開始進(jìn)行我們的工作。

下載請至www.cvsgui.org,那里有最新的版本。

打開開始菜單的之后,你看到的是這樣一個界面:

 

界面由3個主要區(qū)域組成,坐上角是目錄結(jié)構(gòu),右上角是文件夾詳細(xì)內(nèi)容,下方是CVS命令的log。你可以從下方的log中得知cvs運行的詳細(xì)信息。

 

首先你要做的事情就是告訴winCVS你的CVSROOT。

 

這個對話框在winCVS1。2和1。3的各個版本中稍有不同,但是不妨礙你輸入CVS服務(wù)器的詳細(xì)信息。

 

下一步就是login。

 

好了,現(xiàn)在我們就可以去得到一份jive2的源代碼了。

 

你可以看到,winCVS默認(rèn)會加上壓縮的參數(shù),這樣可以減少網(wǎng)絡(luò)流量,加快速度。

 

同樣,用winCVS進(jìn)行文件修改也是挺方便的。

 

 

以上就是winCVS的簡要操作指南。更進(jìn)一步的復(fù)雜操作,請參閱其幫助。

 

 

評價:值得關(guān)注,但不推薦。

在windows Explorer里直接checkout ---- TortoiseCVS

TortoiseCVS已經(jīng)是一個相當(dāng)成熟的cvs界面了,它的工作方式也是非常有趣的。

TortoiseCVS是一個簡潔有效的CVS界面。你完全可以用它替代winCVS做日常絕大多數(shù)的工作。他獨特的運行方式非常迷人,在一些商用配置管理工具,比如Rational ClearCase中,你也可以看到這樣的windows explorer擴(kuò)展程序的工作方式。

缺點:

1,tortoiseCVS會一直不釋放它所操作的一些CVS文件和文件夾的系統(tǒng)資源。你可能會在試圖刪除一個在CVS控制之下的目錄時遇到麻煩。windows系統(tǒng)認(rèn)為有另一個進(jìn)程正在打開它(顯然就是TortoiseCVS),我沒有找到如何殺掉在后臺執(zhí)行的TortoiseCVS的方法。在這種情況,用TortoiseCVS去update一下另一個module有所幫助。或者請重起你的explorer。

2,如果你需要在兩個不同的server或者repository上做checkout的工作,TortoiseCVS有一個bug。它會在你輸入CVSROOT信息,checkout第二個module的時候仍然使用第一個repository的CVSROOT。但是再做一次同樣的操作就會成功的達(dá)到你的目的。

評價:推薦。

按此進(jìn)入關(guān)于使用TortoiseCVS的詳細(xì)說明

基于Netbeans Java類庫的漂亮GUI ---- SmartCVS

使用java編寫的CVS GUI在過去一兩年中得到了長足的發(fā)展。拜jdk1.3所托,現(xiàn)在java程序的執(zhí)行速度也有很大提高。Netbeans是由sun贊助的一個開放IDE,它其中包含了了CVS的基礎(chǔ)類庫。一個商業(yè)性的GUI,SmartCVS,就是在netbeans的穩(wěn)定的cvs核心之上編寫的。 雖然SmartCVS的商業(yè)版本收費,但是其基礎(chǔ)版本是完全免費的,而這個基礎(chǔ)版本已經(jīng)足夠大多數(shù)應(yīng)用所需。

 

SmartCVS你可以在www.regnis.de下載。

SmartCVS自從1.2beta版本開始引入smartCommit,不再區(qū)分add和checkin,統(tǒng)一使用commit進(jìn)行操作。

 

利用SmartCVS,你也可以看到一個文件的歷史,以及圖形化表示的各個分支。

 

 

總結(jié):SmartCVS正如他的名字所說的,是一個相當(dāng)聰明,精致,漂亮的CVS 客戶端。作為日常工作它是完全可以勝任的。如果和TortoiesCVS結(jié)合起來,可以給你相當(dāng)理想的CVS工作平臺。

同時,它也可以在所有jdk環(huán)境中運行,不僅僅局限于windows平臺。

 

 

IDE集成

對程序員來說,真正在編碼的時候,IDE才是每天接觸最多的環(huán)境。如果能夠在熟悉的IDE中使用CVS,當(dāng)然實用性增強(qiáng)很多。Visual source safe 在Microsoft的開發(fā)工具產(chǎn)品VB,VC中集成得相當(dāng)出色,也大大提高了使用使用Microsoft開發(fā)平臺的工作效率。

下面我們就來看看一下在流行的java開發(fā)工具中如何使用CVS。

 

IBM Visual age for java IDE集成 插件 --- vajcvs (未完成)

Visual age for java支持一個開放的Tool API,CVSin就是這樣的一個tool。

下載地址:

 

安裝參見其內(nèi)部readme文件。

 

 

Borland jBuilder 內(nèi)置CVS支持

jBuilder很早就在3.0中內(nèi)置CVS支持,而且當(dāng)時cvs是jbuilder唯一一個正式支持的源代碼管理工具。在最新的Builder 6中,當(dāng)然對CVS也支持得很好。

 

完善的設(shè)計,領(lǐng)先的強(qiáng)大工作平臺 --- Eclipse 及內(nèi)置CVS支持

IBM新的開放式集成開發(fā)環(huán)境,將是IBM visual age 系列開發(fā)工具的下一個平臺。它提供CVS作為基礎(chǔ)集成的一部分。在Eclipse中訪問CVS是一件相當(dāng)輕松自如的事情,Eclipse按照自己的需要封裝了CVS,你可以看到,和其他訪問方式完全不同,Eclipse是到現(xiàn)在為止最強(qiáng)大的CVS工作平臺。

Visual Studio IDE集成插件 -- CVSIn (未完成)

這是一個用于Visual Studio的CVS插件,您可以利用它不離開IDE集成環(huán)境進(jìn)行checkout/commit的操作。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多