Subversion 是一套用來進行版本控制的軟體, 簡稱為 SVN, 常被用來管理軟體專案開發. 也有人用 SVN 來管理文章.
利用這套軟體強大的版本控制功能, 我們也可以像 Wiki 一樣, 進行多人共筆的文章, 不過大多數的人都把它用來管理自己的軟體專案.
比較常見的版本控制軟體有 Concurrent Versions System (CVS), 微軟的 Visual Source Safe (VSS). 而 SVN 的設計目標就是用來取代 CVS.
剛開始接觸 SVN的人, 會以為 SVN 又是一個安裝複雜的大怪獸. 其實
SVN 安裝非常簡單, 只要下載 Zip 檔, 解開, 完成.
我們先來看看怎麼用 svn 管理自己的程式專案吧.
如果改程式, 沒有先備份, 你會發現隨著時間的累積, 你會越來越不敢改程式.
因為有可能一不小心, 就有可能把程式邏輯弄亂了. 等到發生問題了, 卻找不到當初改的什麼地方. --- 這可真的傷腦筋了.
如何讓軟體開發持續進行, 又避免因為亂搞導致整個專案程式亂掉, 是我們要思考的事情.
版本控制就是我們的救星.
以前, 我都是直接複製整個專案, 自己建立專案歷史版本目錄, 現在我把它交給 SVN.
對我來說, 版本控制的好處是:
對個人來說
可以幫你追蹤每個專案的更改過程, 備份所有專案的開發歷史紀錄.
如果有 svn 幫你維護 source code 每個開發時期的版本, 那麼我們就可以大膽的把試驗的結果寫到真正專案中, 而不必擔心因此造成混亂. -- 因為當整個程式邏輯混亂時, 大不了把之前的版本的專案吐出來就好了.
對團隊開發來說
可以讓多人同時進行開發同一個專案, 而且保持專案主線的一致性. 當然也可以讓每個人得到一個個人專案的副本, 進行測試開發. 最後再合併到主線.
為何要用 SVN 管理我的 Source Code ?
- SVN 安裝下載非常簡單, 只要下載 Zip 檔, 解開, 完成.
- SVN 比 CVS 好的地方 (view)
- 世界兩大 Open Source 社群 SourceForge.net 與 Tigris.org 提供 SVN 服務, 讓你可以把專案, 放到他們的網站上, 讓全世界的人一起透過 SVN 持續地開發你的程式.
- 所有專案內的檔案與目錄變化, 全部版本化進行管理
- 不必手動輸入指令: 透過 TortoiseSVN, 可以直接在檔案總管上進行操作 .
- 免費且opensource
- 可搭配強大的整合版本控制系統: Trac
- 提供 Wiki, Timeline, Roadmap, Browse Source 等整合功能
下載 SVN Server (非常簡單)
Step 1:
Step 2:
選擇 svn-win32-1.4.4.zip 下載,
(注意: 解開放到你想要的目錄中, 並設定系統環境變數 Path 到 bin 目錄)
Step 3:
完成 SVN 安裝
下載 SVN Client (與檔案總管完全整合)
通用的檔案結構
一般來說, 我們的專案主目錄下, 通常不成文規定會建立三個目錄. 分別為
trunk: 放一直持續發展的 source code, 即工作主線
branches: 放一些正在修改的分支, 稍後會合併的工作副本
tags: 當發展到一個固定的階段, 可以放 Release 版本的東西
操作方式 (命令列的方式, 如果你用 TortoiseSVN 則不需要打命令)
如何建立一個版本資料庫 ?
<sol> 最簡單的方法是使用命令列
set LANG=en_US
svnadmin create c:\svntest
如果不設定 LANG 變數, 則會產生下面的亂碼訊息.
如果設定正確與延後, 則會顯示英文訊息,
上面的命令列方式預設使用 native file system (fsfs) 的方式建立資料庫.
*如果你使用 TortoiseSVN 建立資料庫, 則會遇到 file system 選項問題,
Berkeley DB or Native filesystem ?
建立 Respository 時, 如果你選擇的 Berkeley DB (BDB), 那麼這個 Respository 將不能用在網路上進行分享, 如果硬作分享, 可能會在程式開發幾個月後才發現 庫存毀損的情況
如果你想要在網路上分享 Respository, 請選擇 Native filesystem (FSFS)
如何執行 SVN server ?
<sol>
svnserve -d -r c:\svntest
如何將目前的專案, 放到 SVN 進行管理?
<sol>
svn import 我的專案目錄 svn://localhost/svntest
如何用 TortoiseSVN 把整個專案 checkout 到指定目錄?
<sol>
點選一個目錄, 滑鼠右鍵: SVN Checkout
如何用 TortoiseSVN 把修改後的內容, 進行更新呢?
<sol>
點選你的修改目錄: 滑鼠右鍵:
1. SVN Update
2. SVN Commit
其他常用的指令
如何合併副本到主線
Step 1. 先查出分支是哪一個修訂版序號
svn log svn://localhost/svn1/branches/a/我的分支
Step 2. 合併由該序號開始
svn merge -r 開始的序號 :HEAD svn://localhost/svn1/branches/a/我的分支
如何建立 Release 版
從一直修正的版本中, 取出一個版本當作 release 版, 主線還是繼續接受修改
下面的例子: 把 trunk/a 下的專案內容, 另外分支成一個 release 版本
svn copy svn://localhost/svn1/trunk/a \
svn://localhost/svn1/trunk/a/release-1.0 \
-m "標記這是 release 1.0 版."
如何刪除某個分支
svn delete svn://localhost/svn1/branches/a/我的分支
如果 repository 的分支改名稱了, 我該怎麼 commit 呢?
延伸閱讀
[1] 翻閱維基百科, 則可以看到不同的版本管理軟體優缺點比較 (view).
[2] Wiki 的中文介紹 (view)
[3] SubVersion 主站 (view)
[4] Version Control with Subversion (電子書, 中文版) (view)
[5] SubVersion 中文站 (view)

沒有留言:
張貼留言