| 0 意見 ]

轉載
前幾天聽到一個同學在趕 project ,結果他 code 修得亂七八糟,然後改到後來發現想要把 code 恢復成曾經寫過的某個版本,但有的地方是忘記怎麼寫,有的地方則是改起來十分麻煩等等,我想如果他有做好版本控制的話,也許就不會這麼囧了…

有鑑於此,我教了幾個朋友簡單使用 subversion 來作版本控制,也許你會問我為什麼不教 CVS 或 Visual Source Safe 等等,很簡單,「因為我只會 subversion !」當然我本身會的也沒有很多,所以只能稍微簡介一下而已 :p

簡單來說,一般版本控制軟體的架構大致是會有一個貯藏庫(Repository,而不是 database),它用來儲存你每次對整個 project 增加、修改及刪除等等動作,每當你將 project 修改至某一個程度(你可以說是某個版本),就可以利用版本控制軟體把你修改的動作送交(commit)到貯藏庫,把這次的修改定為一次修訂版(revision)。正因為這個貯藏庫記錄了每一次修訂版,所以當你想要從貯藏庫取回(checkout)project 時,可以指定任何一次修訂版本,版本控制軟體會幫你處理好從最初版開始的一切動作,當然,如果你本來就存有 project 的 code ,也可以用版本控制軟體作更新(update)的動作來將你所存的 project 更新到最新的修訂版本。

上述的簡介大致提到了在用版本控制軟體時的基本操作,而我這篇文章主要是要介紹 subversion 這個版本控制系統,關於這個系統我就不多作介紹了,我只會提及在各個平臺要怎麼把上面的動作作出來而已。既然作版本控制需要一個 repository ,這裡介紹兩個在網路上可以找到的 subversion 服務:OpenSVN 及 Google Code 上的 Project Hosting 。這兩個網站你都可以隨意(似乎是如此)建立新的 repository 放你的 project (惟 Google Code 一個 project 的 repository 限制磁碟空間最多只能使用 100 MB),之後的例子會以 Google Code 的 Project Hosting 當作例子示範。

Google Code Project Hosting

在 Google Code 的左側導覽列中點選 Project Hosting 便會來到上面的網頁,這時再點選 Create a new project 就可以填入你 project 的相關資料,這樣 Google Code 就幫你產生了一個 repository 了。設定好之後你只要先知道你 repository 的位址(到你 Project 首頁的 Sources 裡去看,會是 https://<你project名稱>.googlecode.com/svn/)就可以了,同時你也要知道你在 Google Code 的密碼,到右上角的 My Profile -> Settings 裡就會有 Google Code 產生的密碼,這個也要記住,因為當你在 commit 的時候會需要用到。

Source URL

版本控制總需要一個 client-side 的軟體,在 Unix 系的環境裡你安裝好 subversion 相關套件後,就可以在終端機下使用 svn 這個指令來作版本控制,而在 Windows 上,你可以使用一個有圖形化介面的 subversion 軟體:TortoiseSVN,安裝這個軟體後,它就會在你檔案總管的右鍵選單中加入 subversion 的相關指令,相當方便易用。

SVN Checkout安裝好 TortoiseSVN 之後,你可以選擇你要存放 project 的位址,然後在該處按右鍵選 SVN Checkout…,再填入你 project repository 的網址及要儲存的資料夾,輸入完帳號及密碼後, repository 上的檔案就會下載下來了。注意你 repository 下會事先建立好三個目錄:branch、trunk及tags,如果你還不是很熟悉版本控制的話,就先把你的 code 放在 trunk 目錄下就好了,所以在 checkout 的時候網址應該輸入:https://<你project名稱>.googlecode.com/svn/trunk/,然後本地端再輸入你 project 的名稱就好,這樣一來你就有一份本地端的 repository 了。

SVN Checkout...

SVN Commit... 接著,你就可以在這個目錄下放你 project 的資料了,當你決定要 commit 到伺服器上的 repository 時,只要在 project 的目前上按右鍵,選擇 SVN Commit...,這時就會跳出一個對話盒問你要加入或修改哪些檔案,然後也可以讓你填入 log 好記錄這次的修訂版本做了什麼修改,方便日後你要取出某個修定版本時作參考。

如果你在不同的地方都有放一份 repository ,那你每次要修改 project 內容時,都應該先利用 SVN Update 的功能,讓你把 repository 更新到最新的狀態(當然,你也可以選擇要更新到第幾次修訂版 TortoiseSVN -> Update to revision...),這樣當你在作 commit 動作時,才不會出現有不同步的狀況,因而發生 conflict ,那就要再仔細檢查應該如何修改 code 消除 conflict 了。

(待續…)

0 意見

張貼留言