encourage sb in sth:TortoiseCVS 使用者手冊中文版(jiing‘s blog)

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 03:29:03

TortoiseCVS 使用者手冊中文版(第一章)

TortoiseCVS 使用者手冊中文版 譯者:Jiing Deng
http://jiing.org

Version 1.8.12
Ben Campbell
Martin Crawford
Hartmut Honisch
Francis Irving
Torsten Martinsen
Ian Dees
Copyright c 2001 - 2004 TortoiseCVS

第一章 開始囉!


什麼是CVS?



CVS,或Concurrent Versioning System,是一個版本控制系統。版本控制系統一般被用來作為一個發展團隊中軟體發展循環的一部份,以便追蹤並協調原始碼的變化。

例如,當軟體被修改時,臭蟲(瑕疵)有時候會漸漸產生,而直到你做了修改很久之後,都沒有偵測到臭蟲。用CVS,你可以輕易地取回舊版本,來切實地看看哪個改變引起了臭蟲(瑕疵)。這有時候可能很有助益。

你當然可以儲存每個你已經建立的檔案的每個版本。然而這會浪費很大量的磁碟空間。CVS以「只儲存介於版本間的變化」的聰明方式來在一個檔案中儲存所有檔案的版本。

如果你是同一個專案工作團隊的一份子,CVS也能幫助你。除非你極度地小心,否則總是太容易去覆寫每個他人的改變。一些編輯器,例如GNU Emacs,試著確認同樣的檔案絕對不會被二個人在同一時間修改。不幸的是,如果某人使用其它的編輯器,防護措施無法發生作用。CVS藉由隔絕不同的開發人員來解決此問題。每個開發人員在他個人的測試沙箱(sandbox)裡工作,當每個開發人員完成工作時,CVS合併(merge)其工作。

什麼是TortoiseCVS?



TortoiseCVS是一個讓使用CVS更輕鬆並更直觀的前端的客戶端。它讓開發人員直接從Windows Explorer和被CVS控制的檔案一同工作。

CVS主要的缺點是它所提供的命令列介面。今日許多開發人員漸漸地更習慣於圖形的整合發展環境(IDEs)。TortoiseCVS的目標是以一個聰明且直觀的方式來提供「點擊並按下(point-and-click)」的環境。

注意TortoiseCVS是一個CVS客戶端,不是伺服器。此文件假設你知道如何設定你的伺服器,或是你正使用一個其它人設定的伺服器。如果你想要學習關於設定CVS伺服器的細節,請見第八章,資源。

從哪裡開始?


1. 學習如何使用TortoiseCVS最好的方法是玩它。從安裝TortoiseCVS開始。

2.如果你是CVS新手,以TortoiseCVS的基本用法開始。

3. 一旦你已經學過規則,在TortoiseCVS的進階用法中檢查進階的特色。

4. 為了純粹的參考,TortoiseCVS命令參考和TortoiseCVS對話方塊參考(Command Reference for TortoiseCVS and Dialog Reference for TortoiseCVS)會幫你從TortoiseCVS中學到最多。

5. 最後為了完整和愉快的版本控制經驗,檢查文件、訣竅和小技巧(Articles, Tips and Tricks)。

第二章 TortoiseCVS的基本用法



測試沙箱(Sandboxes)



CVS有不同於其它版本控制系統的獨一無二的工作方法,開發人員可同時在CVS裡編輯同一個檔案。首先你從檔案庫(repository)取出(check out)原始碼的一個版本到你電腦上的本地複本。

於是你可以輕鬆地只編輯你想要改變的檔。你可以新增檔案(Add new files)或是移除你不再需要的檔案。當你完成時,你存入(Commit)變化到檔案庫(repository)。

如果在你正在修改時,其它人已經改變了同一個檔案,那麼存入(commit)會失敗。那麼你必須從檔案庫(repository)更新(Update)所有你的原始碼檔。這個自動地合併其它開發人員的改變到你的檔案複本裡。

有時候CVS不能自動這麼做,例如假使你們倆都改變了同一行程式碼。這稱作「衝突(Conflict)」。衝突(Conflict)比你所預期的發生次數少得多。CVS把衝突原始碼的二個版本都放在檔案裡,會以記號來分隔它們。然後在你能存入(commit)改變之前,你必須手動編輯檔案以解決衝突。

此工作的方法有很多好處。每個開發人員生活在測試沙箱中。另一個開發人員所做的改變是與你隔離的,直到你想要存入(check in)你的改變。它中止因為其它人已經取出(check out)檔案而使人們不能做事的瓶頸。任何開發人員可以在檔案上工作而不需直接存取伺服器,他們只需要連結到伺服器來更新(update)或存入(commit)。

取出(check out)一個模組



第一次要從CVS伺服器獲得一個模組,稱作取出(checkout)。從檔案庫(repository)取出(check out)一個模組會建立一個模組的本地測試沙箱(sandbox)。

圖2.1 取出(Checkout)對話盒



要執行取出(checkout),在你想要放置模組的資料夾上按滑鼠右鍵,並從pop-up選單中選擇CVS Checkout...。Checkout 對話盒會伴隨著下列欄位而出現:

Protocol 當與遠端的CVS檔案庫(repository)通訊時所用的協定。
Server 遠端CVS檔案庫(repository)的伺服器主機名稱。
Port 遠端CVS檔案庫(repository)的埠(port)。通常不需要。
Repository Directory 在遠端伺服器上CVS檔案庫的位置。
User name 你的CVS檔案庫的帳戶名稱。
CVSROOT 完整連結的字串,由上述的欄位所組成。通常你會被給予此格式的連結字串,可以直接貼來這裡。
Module 你想要取出(checkout)的模組名。模組名是有區分大小寫的。

你會需要預先知道此資訊。大部份專案應該有某份關於如何連結和取出(checkout)它們的模組的文件(通常在線上)。此外,你的軟體領導人,或是專案管理員應該能提供給你此資訊。

注意:現在選擇你的專案取出(checkout)設定比稍後去移動你的專案到不同的伺服器或是協定要更容易。例如,如果你的伺服器提供二個不同的CVS協定,確定你選擇了最適合你需求的那一個。

在你取出到資料夾內的模組被建立之後,資料夾會被命名,所以你可以在同一個資料夾內保留你取出(checked out)了的模組,即便它們是給不同的專案的。

若需更多的資訊,請見取得一個工作複本(Obtaining a Working Copy):CVS Checkout...。


Windows Explorer 和 TortoiseCVS


我們已經取出(check out)了模組,現在我們可以探索TortoiseCVS如何與Windows一同工作。你會注意到出現於Windows Explorer的你的檔案有不同的小圖示覆蓋在上面。此外,如果你正使用Windows 2000或Windows XP,你也可以看到新的CVS欄在Windows Explorer的Detail View中。(詳見顯示更多的資訊:CVS Explorer Columns)

圖 2.2. TortoiseCVS 和Windows Explorer


覆蓋的小圖示指出檔案或是資料夾在CVS的狀態。下圖指出每個小圖示的對應狀態:

表2.1. 覆蓋的小圖示



 
未修改過的
檔案或資料夾是CVS檔案庫上最新的版本。



修改過的
檔案或資料夾已經被修改過,不同於目前的CVS檔案庫版本。


 
新增的
檔案或資料夾已經被新增到CVS,不過尚未被存入(committed)。


 
有衝突的
檔案或資料夾與目前的CVS檔案庫的版本有衝突。


 
不在CVS上
檔案或資料夾不在CVS檔案庫裡。



CVS Watch的覆蓋小圖示
檔案或目錄在CVS Watch下被控制。

 


 
忽略的覆蓋小圖示
檔案或目錄被CVS忽略。

 




你藉由在Windows Explorer內按滑鼠右鍵並從內容選單中選擇CVS操作來與TortoiseCVS互動。操作被執行於哪個檔案和資料夾根據你選了什麼和你在哪裡按滑鼠右鍵:

表 2.2.滑鼠右鍵的內容選單



   
選擇一或多個檔案,操作會被執行於那些檔案上。


 
選擇一或多個資料夾,操作會被執行於這些資料夾和包含在其內的檔案或資料夾。


 
在Explorer隔板(pane)內其它任何的地方,操作會被執行在view內所有檔案和資料夾上。



________________________________________
上表顯示預設的覆蓋小圖示;TortoiseCVS可以被組態設定來使用替代的圖示集──詳見覆蓋的小圖示(Overlay Icons)。

Total Commander 和TortoiseCVS



熱門的Total Commander(以前是Windows Commander)檔案管理員也可以和TortoiseCVS一同運作。我們建議你進去選項選單並將滑鼠右鍵組態設定給Windows標準操作。

更新你的測試沙箱



偶爾你可能想要將別人所做的變更處整合到你的本地端的工作複本。從伺服器取得變動的部份到你的本地複本的過程稱作「更新(Updating)」。更新(Updating)可能作用於一個檔案、一個被選的檔案的集合,或遞迴地在整個目錄階層上。若要更新,強調標示(highlight)你想要的檔案及/或資料夾,按滑鼠右鍵並選擇CVS Update。Progress對話盒會蹦出並顯示當它執行時更新的過程。

圖 2.3. 更新檔案和資料夾


由其它人所做的變動會被合併到你的檔案之中,保有任何你可能已經做的變動於同一個檔案。執行更新(update),檔案庫(repository)不會被影響。如果你在更新期間收到衝突報告,請讀一下解決衝突(Resolving Conflicts)。
For more information see Getting Other People‘s Changes: CVS Update.
若需更多的資訊,請見取得其它人的變動部份:CVS Update。

Committing your Changes to the Repository

存入你的變動到檔案庫



讓本地的修改在檔案庫(repository)有效稱作「存入(committing)」變動。。在存入之前,你應該做更新以確保沒有衝突(conflicts)。(詳見更新你的測試沙箱)。

要開始存入你的變動, 選擇你想要存入(commit)的檔案或資料夾。在所選的檔案或資料夾上按滑鼠右鍵,並選擇CVS Commit...選單項目。

圖2.4. 存入(Commit)對話盒


然後你將看到存入對話盒(Commit Dialog),在裡面你可以簡短的總結你做了什麼變動。你也可以藉由不勾選(uncheck)它們的核選盒(checkboxes)來排除變動的檔案,使其不被存入。一旦你滿意你所存入的東西,在對話盒上按下OK來繼續進行你的存入(commit)操作。

請注意存入變動不會自動地新增你已經建立的新檔案到檔案庫(repository)。詳見新增檔案和目錄到檔案庫中(Adding Files and Directories to the Repository ),看看如何新增檔案。

若需更多的資訊,請見「讓你的變動對別人有用:CVS Commit...(Making Your Changes Available to Others: CVS Commit....)」

解決衝突



有時候,當你從檔案庫(repository)更新你的檔案,CVS伺服器會報告衝突。當二個或更多開發人員變動了一個檔案的同一行,衝突會發生。當CVS不懂你的專案時,它將衝突留給開發人員解決。

每個衝突檔在progress對話盒中以”C”標示(詳見Progress對話盒)。當更新完成時,解決衝突(Resolve Conflict)對話盒會出現:

圖 2.5. 解決衝突對話盒


在衝突檔上按滑鼠右鍵並選擇Merge Conflicts....,現在TortoiseCVS會呼叫你在Preferences/Tools/Merge application所選的合併應用程式(merge application)。解決每個衝突,儲存結果檔,並且退出合併應用程式(merge application)。TortoiseCVS會問你以確認你要儲存合併的結果。

你也可以在關閉process對話盒後藉由在測試沙箱中按滑鼠右鍵並選擇CVS → Resolve Conflicts...選單項目來帶出對話盒。

新增檔案和目錄到檔案庫



如果你已經建立新檔案或目錄,你會注意到它們以Not In CVS狀態覆蓋的小圖示顯示(詳見Windows Explorer 和 TortoiseCVS)。要在CVS控制下放置新的檔案或資料夾,選擇你想要新增的項目,按滑鼠右鍵並從內容選單中選擇CVS Add來排定新增。新增對話盒(Add Dialog)會顯示使得你可以驗證你所增加的檔案。

圖 2.6. 新增對話盒(Add Dialog)


你不需要煩惱一個檔是否是ASCII/Text,Unicode/Text, 或二元檔(Binary),TortoiseCVS會自動地偵測它。若需更多關於TortoiseCVS如何處理它的資訊,請看二元檔(Binary)和Unicode 偵測(Binary and Unicode Detection)。

在新增操作被執行後,檔案或檔案小圖示顯示為「被改變了的(changed)」。這是因為新增被視為本地端的變動,且尚未被套用到檔案庫(repository)上,直到你存入(commit)它們。

此外,你可以使用CVS Add Contents...命令來新增一些檔案和目錄到CVS。此操作遞迴地往下到資料夾結構裡,並在Add Dialog中顯示所有尚未新增(unadded)的檔案。在此你可以核選和取消核選你希望新增到CVS的檔案和資料夾。

圖2.7. 新增內容對話盒(Add Contents Dialog)


若需更多資訊,請見新增新檔案:CVS Add和CVS Add Contents...。  

第三章 TortoiseCVS的進階用法



建立一個新的檔案庫(Repository)或模組



一般而言, 一個系統管理者會在遠端伺服器上設定CVS檔案庫(repository)。然而,TortoiseCVS可本地或遠端地組態設定檔案庫(repository)和模組(如果你有正確的權限許可)。

要建立新的檔案庫(repository)和/或模組,在本地準備資料夾和檔案以作為新的測試沙箱。在你的新模組或檔案庫(repository)最上層的資料夾上按右鍵,並選擇CVS → Make New Module...選單項目。Make New Module Dialog會被顯示。當你想要取出(Checkout)時,為新的或既存的CVS檔案庫鍵入詳細的資料。按下OK來建立新模組。

圖 3.1. 建立新模組(Make New Module)對話盒


如果可以連上遠端CVS伺服器,但是CVS檔案庫(repository)不存在,你會看到下列的問題:

圖 3.2. 建立新檔案庫時的問題


要建立新的檔案庫,勾選Initialise a new repository here並按下OK。如果你在遠端伺服器上有正確的權限許可,TortoiseCVS會建立新的檔案庫(repository)。

一旦TortoiseCVS建立了一個新的或是連結到一個既存的CVS檔案庫(repository),新的模組會被建立。預設上,TortoiseCVS使用所選的資料夾的名稱作為新模組的名稱,不過你可以藉由修改Module 文字方塊(textbox)來改變它。

觀看(Watch)、編輯和反編輯(Unedit)



CVS也遵循大多數版本控制系統用的Lock/Unlock的語義,雖然CVS稱它為Edit/Unedit。然而,預設上此特色在CVS裡並沒有被開啟(enable),所以在你可以開始之前,你需要開啟Watch的功能。

當你以勾選checkbox的Check files read-only(在Options標籤上)的方式來建立一個新模組時,你可以使用TortoiseCVS來開啟Watch的功能。如果你希望在既存的模組上啟動watch功能,你會需要在模組的最上層執行下列的命令(使用Command Prompt):
cvs watch on

一旦Watch功能被開啟,當你執行Checkout或Update時,作用中的檔案會被建立成唯讀的。要改變一或多個檔案,選擇目錄、檔案或你想要修改的檔案們,在其上按下滑鼠右鍵,並選擇CVS Edit選單項目。此命令根據檔案是純文字或是二元檔,其運作稍有不同。對於二元檔(例如.doc),TortoiseCVS在檔案上執行Update,然後檢查是否另一個使用者已經在編輯那個檔了。如果是這個情況,你不被允許去編輯它。對於純文字檔而言(例如.txt或.cpp),即使已有另一個使用者已經在編輯它,你也可以在檔案上工作;在這種情況下,TortoiseCVS會告知你這件事。

當你已經完成檔案的編輯,存入(commit)它們就如同正常情況時。然而,如果你決定你不想要改變選擇的檔案:在所選的檔案上按下滑鼠右鍵,並且選擇CVS → Unedit選單項目。TortoiseCVS會問你是否想要回復檔案到原始的版本(因此會遺失你所變更之處)。

如果你想要看看哪一個檔案正被編輯及被誰編輯,在Windows Explorer的任何地方按下滑鼠右鍵並選擇CVS → Show edited files選單項目。

Tagging 和 Labeling



在已知的發展階段上,給予一個或多個檔案共同的、指向它們修訂版本的標籤(label),這就是所謂的將這些檔案貼標籤(tagging)。Tagging一般用於整個模組,使得模組目前的狀態可以在未來被重新建構。此種tagging應該總在專案待傳送的部份(project deliverables)上被完成,並在開始主要的變動之前。

要用標籤(label)來tag一個或多個檔案或目錄,選擇那個目錄、檔案或你想要tag的檔案們。在所選項目上按右鍵,然後選擇CVS → Tag...選單項目。

圖 3.3. Tag 對話盒


然後你會看到Tag對話盒。在此你可以在Tag欄位輸入一個標籤(label)。CVS對tag將包含的字元有相當的限制。一個tag必須以字母開頭,且只可以包含字母,數字,「-(dash)」和「_ (底線)」。實際上,這代表沒有句點(dot),且沒有空白(space)。如果你想要在tag裡引入版本號碼,以「-」(dash)取代句點(dot)。有二個tag名稱被保留,因為它們在CVS裡有特殊的意義:「Head」代表在檔案庫(repository)中的最近可用版本,而「BASE」是你最後取出(check out)到本地目錄的修訂版本。

一旦輸入了標籤(label),按下OK鈕。不像大多數CVS操作,tag立即套用於檔案庫(repository),且不需要存入(commit)。

若需更多的資訊,請看建立快照:CVS Tag....(Making a Snapshot: CVS Tag....)

回復到檔案的較舊版本



開發人員偶爾需要還原(undo)已經被存入(check in)的變更之處。在TortoiseCVS中返回到特定的檔案修訂版本很容易:

1. 在檔案上按滑鼠右鍵並選擇CVS → History來帶出History 對話盒。

2.在修訂版本(revision)上按右鍵並選擇「Save this revision as...」選項。

3.當Save As對話盒出現時,不要按下「Save」鈕;取而代之地,在目錄列出的檔案名稱上雙擊。

4. 當TortoiseCVS指示你覆寫檔案時,回答「Yes」。

分枝和合併



版本控制系統的一個特色是:隔離變動到「個別的開發動線」上的能力。此線是所謂的分枝(Branch)。

分枝(Branching)用來控制軟體專案的生命週期的變動很有用。例如,假設你已經首次釋出你的軟體專案的第一版。你現在為了準備你的下一個主要釋出版本2.0,開始增加新的特色。你發現到在你的初次釋出版本和新的版本之間,軟體有瑕疵(bug)。目前原始碼的修訂版本在變遷(flux)的狀態,且預料至少一個月內無法達到穩定的狀態,因此無法根據最新的原始碼來做一個修正臭蟲(bugfix)釋出版本。

不要試著去對目前的版本,或是HEAD分枝(branch)做修正,取而代之地,你要對所有構成release 1.0的檔案的修訂樹(revision trees)上建立分枝。然後你可以對分枝做修改而不需要擾亂head分枝。當修改完成時,你可以整合它們到head分枝,或是將它們留在release 1.0分枝上。

建立分枝



要建立分枝(branch),選擇你想要分枝的檔案或目錄。在所選的項目上按滑鼠右鍵,並從內容選單中選擇CVS → Create Branch...。

圖 3.4. Branch對話盒


然後你會看到Branch對話盒。在此你可以在Branch欄位鍵入一個標籤。名稱限制的規則與套用到Tags上的一樣,同樣套用於Branches。一旦你已經鍵入想要的branch名稱,按下OK。不像大部份的CVS操作,分枝(branch)立即套用到檔案庫上,且不需要存入(commit)。然而,分枝(branch)只套用於檔案庫上。要開始在新建立的分枝(branch)上工作,選擇那個分枝(branch)來幹活。

選擇分枝(branch)來幹活



要開始在分枝而非在預設的開發動線上幹活,你必須繫結(bind)你的本地端複本到分枝。這需要確認諸如更新(update)、存入(commit)等……動作可在分枝上、而非在主要開發動線上運作。

要移動你的本地端複本到另一個分枝(branch),選擇專案最頂層的資料夾。如果你知道資料夾和檔案的資訊,你應該也可以選擇想要的分枝的部份確切資料夾和檔案。在所選項目上按滑鼠右鍵,然後選擇CVS → Update Special....。

圖 3.5. 特定更新對話盒(Update Special Dialog)


然後你會看到特定更新對話盒(Update Special Dialog)。在此你可以在你希望選取的Get Tag/Branch/Revision欄位鍵入分枝名稱。按下OK鈕,TortoiseCVS現在做必需的更新以移動你的工作複本到想要的分枝(branch)。根據分枝(branch)的狀態,更新也可能包含新增或移除檔案。

TortoiseCVS放置黏貼的標籤(tag)到被分枝影響的檔案上。要移除黏貼的標籤(tag),你必須回到head分枝。

從分枝合併



當你對你在分枝上已做的變動感到滿意時,你可能想要那些在開發的head分枝上的變動能被用。整合一個分枝的變動到另一個分枝,是所謂的合併(merging)。

要從分枝(branch)合併,移動你的本地複本到你要想合併變動進去的分枝裡。詳見選擇一個分枝來幹活(Selecting a Branch to Work On)或回到Head分枝(Going Back to the Head Branch)。

圖 3.6. 合併對話盒(Merge Dialog)


然後你會看到合併視窗(Merge Dialog)。在此你可以在你希望合併的Branch to merge from欄位鍵入分枝名稱。按下OK鈕,TortoiseCVS現在會合併特定分枝到你的本地複本。你的變動不會被套用於伺服器檔案庫(repository)上,直到你存入(commit)你的變動。

前述的合併會試著去合併從分枝開始的變動。如果你第二次做此操作(合併「在最後一次合併後於分枝上」的變動),從分枝的開始合併不是你想要的,而且它最可能讓你掉進麻煩裡。為了避開此問題,你應該在每次合併後給分枝一個新的tag,並且在當命名分枝以備接下來的合併時,使用新的tag。

注意:上一段只應用到標準的Unix CVS(也就是cvshome.org CVS)。如果你的伺服器執行CVSNT,你可以利用所謂「合併點(merge point)」的特性。這代表CVS持續追蹤你最後一次的合併,使得你可以毫不費勁地從同一個分枝重覆地合併。若需更多此特性的資訊,參見the CVSNT Wiki page(注意CVSNT手冊在此時點上尚未更新)。

回到Head分枝



如果你想要停止在分枝上工作,並且移動你的本地端複本回到主要開發動線,你必須讓TortoiseCVS移除所有黏貼的標籤(tags)。

為了移除黏貼tags,因此更新你的本地複本到主要開發動線,選擇專案的頂層資料夾。如果你知道資訊,你也可以就選擇意欲分枝的部份資料夾和檔案。在所選項目上按滑鼠右鍵,然後選擇CVS → Update Special....。

然後你會看到特定更新對話盒(Update Special Dialog)。選擇Return to main (HEAD) branch核選盒(checkbox)並按下OK鈕。TortoiseCVS現在會做必須的更新來將你工作中的複本移回到head分枝(branch)。

二元和萬國碼偵測



TortoiseCVS試著去自動地偵測你正新增到CVS的檔案類型。它可以偵測檔案是否是Text/ASCII, Text/Unicode, 或Binary。TortoiseCVS首先檢查檔案的副檔名來決定檔案是否是二元檔(Binary)或純文字檔(Text)。例如,.doc和.exe總是被預設是二元檔,而其它的副檔名,例如.cpp和.txt總是被預設是純文字檔。TortoiseCVS使用內建的、包含大部份常見檔案副檔名的二元檔和純文字副檔名的列表來做這件事。要自訂此列表,你可以從TortoiseCVS的安裝目錄複製檔案TortoiseCVS.FileTypes到你的HOME目錄(譯註:經與whiteg討論,覺得指的應是如C:\Documents and Settings\jiing的目錄,未實驗^^|||),並且編輯它以符合你的需要。

預設上,TortoiseCVS也會檢查檔案的前4000 bytes來決定類型。這被用來在檔案副檔名未知的情況。這前幾個的bytes也被用來決定檔案是Text/ASCII或Text/Unicode 。

TortoiseCVS也提供了複雜的外掛(plugin)機制,讓你可以實作DLL來執行檔案類型的偵測。詳細的外掛(plugin)介面可在FileTypes.config裡找到。

在所有的情況下,Add對話盒都會顯示「你可能新增其的檔案類型」的檔案,使得你有機會去修正已做的選擇。

檔案修訂歷史



TortoiseCVS提供二個回顧檔案的歷史和與其共同工作的方法。第一個是經由History對話盒。

History對話盒



藉由選擇檔案並右擊CVS → History,你可以看檔案的歷史。

圖 3.7. History對話盒


History對話盒也顯示對於所選的檔案的修訂、tags和分枝的紀錄。藉由在特定修訂版本、tag或分枝上按右鍵,它也提供你機會去找出差異(diff)及在本地端儲存修訂(save the revision locally),或是用黏貼tag來更新(update)(一個高階的CVS概念;通常比較偏好用save選項來做黏貼更新(sticky update))。藉由在修訂版本上按一下並輸入到視窗底部的文字區塊中,你也可以編輯任何目前或之前存入(commit)的訊息(記得在你移動到新的修訂版本前,按下Apply)。

修訂版本圖形對話盒



TortoiseCVS也提供一個修訂版本圖形對話盒來圖形化地顯示檔案的歷程給你看。你可以藉由選取它並按滑鼠右鍵CVS → Revision Graph來看一個檔案的修訂版本圖。

圖 3.8. 修訂版本圖形對話盒(Revision Graph Dialog)


就像History對話盒,修訂版本圖形對話盒(Revision Graph Dialog)會讓你看見在任何修訂版本、tag或分枝(branch)上執行CVS的操作細節。

如果你的CVS伺服器執行CVSNT,你也將能夠看見哪個合併操作已經在檔案上被執行:紫色的箭頭從起點修訂(source revision)被拉出到終點修訂(destination revision)(詳見合併點(Mergepoints))。

Web紀錄



Web Log提供很多與History及修訂圖形(Revision Graph)對話盒相同的功能。一個重大的差異是Web Log不是TortoiseCVS本身的一部份,不過可能與被安裝在你使用的CVS伺服器上的特殊軟體相依。二個提供Web Log功能的熱門套件是ViewCVS和CVSweb──詢問你的CVS管理者,如果這二者其中之一可用。

要看Web Log,你用網頁瀏覽器來開啟一個特定的URL。TortoiseCVS知道最常用來看Web Log的URLs,且在大部份的情況下自動地偵測正確的那一個[2]。如果你的組態設定是非標準的,第一次時你可能必須手動地鍵入URL──下一次TortoiseCVS會記得它。

你可以藉由選擇一個檔案或資料夾並且右擊CVS → Web Log來觀看其Web Log。如果TortoiseCVS不能偵測到URL,下面的對話盒會出現。

圖 3.9. Web Log對話盒


鍵入正確的URL並按下OK。如果Web Log伺服器的URL已經變更,你可能必須告訴TortoiseCVS去再執行一次自動掃瞄。
________________________________________

[2] 對於自動URL偵測的細節,請見Web Log如何自動偵測伺服器的URL(How Web Log Autodetects the Server URL)。

建立一個補綴檔



通常你可能有CVS檔案庫或模組的讀取權限,不過沒有寫入權限。開放原始碼專案通常以此方式運作以對所有對專案的貢獻維持品質管制。貢獻變動到這些專案的最簡單且最可靠的方式是去建立補綴檔(Patch File)來呈送給它們。

在TortoiseCVS中,藉由選取你希望包含在補綴檔的資料夾或有變動的檔案便可完成。在你所選項目上按滑鼠右鍵,並從內容選單中選擇CVS → Make Patch...。然後你會被一個Save對話盒提示去指出要儲存你的補綴檔到哪裡。最後,TortoiseCVS會在筆記本(Notepad)裡開啟新的補綴檔,在那裡你可以驗證你的變動。

有時候你的貢獻包含了新增新檔案,這些新檔案尚未在CVS裡。TortoiseCVS不能猜測說你想要這些檔案被包含進補綴(patch)之中,不過在Save對話盒裡你可以按下Browse鈕來帶出Add對話盒。在此你可以選擇要包含在補綴(patch)之中的檔案。