星期六, 九月 10, 2005

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

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

第二章 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)對話盒
Fig 2.1


要執行取出(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
Fig 2.2

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

表2.1. 覆蓋的小圖示





































Table 2.1.1  未修改過的 檔案或資料夾是CVS檔案庫上最新的版本。
Table 2.1.2 修改過的 檔案或資料夾已經被修改過,不同於目前的CVS檔案庫版本。
  新增的 檔案或資料夾已經被新增到CVS,不過尚未被存入(committed)。
Table 2.1.3  有衝突的 檔案或資料夾與目前的CVS檔案庫的版本有衝突。
Table 2.1.4  不在CVS上 檔案或資料夾不在CVS檔案庫裡。
Table 2.1.5 CVS Watch的覆蓋小圖示 檔案或目錄在CVS Watch下被控制。

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

 



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

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














Table 2.2.1  選擇一或多個檔案,操作會被執行於那些檔案上。
Table 2.2.2  選擇一或多個資料夾,操作會被執行於這些資料夾和包含在其內的檔案或資料夾。
Table 2.2.3  在Explorer隔板(pane)內其它任何的地方,操作會被執行在view內所有檔案和資料夾上。



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

Total Commander 和TortoiseCVS



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

更新你的測試沙箱



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

圖 2.3. 更新檔案和資料夾
Fig 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)對話盒
Fig 2.4

然後你將看到存入對話盒(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. 解決衝突對話盒
Fig 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)
Fig 2.6

你不需要煩惱一個檔是否是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)
Fig 2.7

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

0 意見: