跳到主要內容區塊

計資中心電子報C&INC E-paper

專題報導

Subversion(SVN)概念與工具介紹
  • 卷期:v0020
  • 出版日期:2012-03-20

作者:曹桂漪 / 臺灣大學計算機及資訊網路中心程式設計組幹事


Subversion(SVN)是一個開放原始碼的版本控制系統,使用SVN能提供多人共有資料的一致性,以及版本控管,適用於文件檔案或是程式碼檔案。

 

前言

Subversion(以下簡稱SVN)是一個版本控制系統,使用SVN能同時提供組織多人共有資料的一致性,以及最新最正確的版本控管,適用於文件檔案或是程式碼檔案的管理。由於使用上複雜度不高,只要花點時間學習,就能輕易的上手,故目前已經較為廣泛被認同與使用。

 

SVN發展至今已經有許多的圖形化軟體可以使用,更貼近一般使用者的使用習慣,舉例說明:如TortoiseSVN這套軟體的新增、更新、上傳、下載等用法,都很接近一般的檔案管理操作模式。

 

SVN是一個檔案伺服器,使用上很類似FTP檔案傳輸軟體,一樣可以劃分不同的權限,如單設定一人可以上傳更新與下載使用觀看,其他人只有下載,而無上傳權限;亦或是大家都可以同時有上傳跟下載的權限,就看如何比較設定比較合用。

 

工具介紹

大約可分為以下9種工具,可依不同的作業系統或使用習慣需求,選擇合用的工具使用:

1.TortoiseSVN:在windows非常受到歡迎的一套Client軟體,與檔案總管整合得很好,可透過檔案 總管在檔案或目錄上用滑鼠右鍵的選單完成SVN的操作。
2.Ankhsvn:將subversion的操作整合到Visual Studio的SVN Client軟體。
3.Subclipse:將Subversion的操作整合到Eclipse的SVN Client軟體。
4.Subversive:和Subclipse相同。
5.SCPlugin:在Mac OS下使用,類似Tortoise SVN的軟體。
6.SVNx:在Mac OS X下的一款Client軟體。
7.eSVN:Unix下類似Tortoise SVN的軟體。
8.kdesvn:在Linux下使用KDE桌面管理下類似TortoiseSVN的軟體。
9.RabbitVCS:在Linux下使用Gnome桌面管理下類似TortoiseSVN的軟體。


SVN Client圖形化軟體眾多,本次電子報將介紹較多人使用的TortoiseSVN軟體

一、 SVN用戶端TortoiseSVN的安裝和操作
二、 使用者帳號的建立

需由管理者從管理端新增帳號與權限後,使用者端才能連結到主機上進行上傳與下載更新的動作。

 

三、使用端的安裝

1. 安裝用戶端http://tortoisesvn.net/downloads.html
2. 若是Windows7,請記得點選64bit進行下載,安裝步驟不難,就是按照說明點選下一步, 進行安裝

 

四、使用端的用法

1. 首先連結到要上傳的主機上,輸入主機的IP位址,多人使用可直接連接到共用的資料夾上,通常由主機端管理者建立資料夾分類並分配權限給使用端的用戶使用。

2. 開始使用,對任一個資料夾點選右鍵,點選TortoiseSVN / Repo-browser/


3. 輸入主機端網址,按OK


4. 在右側的空白處,按右鍵新增一個資料夾create folder,並命名。



5.也可以直接從client的電腦上,新增資料夾檔案到主機上,一樣在右側區塊按右鍵,點選add folder


6. 刪除檔案或資料夾時,直接對該檔案點選右鍵,選擇刪除(delete),比較特別的是,執行完刪除後,該資料夾還是會出現在左側區塊,需重新登入SVN後,才會看到被刪除後的狀況。

7. Import

 

01. 先把檔案上傳到SVN主機上,建立最初的版本
02. 對資料夾按右鍵,選擇import



03. 上傳完成的訊息(import finished)



8. Checkout

01. 把主機上的檔案或是程式碼取出存到用戶端的電腦裡,建立連動。
02. 對資料夾按右鍵,選擇SVN Checkout

 

03. 會出現主機的URL跟用戶端的資料夾路徑,供確認是否無誤,版本區可以選擇預設值第一版,或是手動輸入版次數字。



9. Update

01. 更新,下載最新的版本到用戶電腦裡,若資料跟主機一樣新,就不會異動。
02. 對資料夾點選右鍵,選擇SVN Update進行更新。


03. 更新完成的畫面。

 



10. Commit

01. 完成。
02. 對資料夾點選右鍵,選擇SVN Commit。


03. 當用戶端與主機端資料不一致時,若是執行commit的指令,會出現訊息,這邊範例是讓用戶端多了一個檔案,這時只要勾選該檔案進行上傳即可,否則commit的OK按鈕會一直呈現反白狀態。

 



11. Commit完成後,對該資料夾右鍵選擇TortoiseSVN,才會出現更多的功能畫面可以使用。



12. 文件定版01. 這個功能對程式開發期間,是很重要的,可以將不同進度的版本,加以定版,當業務單位需求變更回之前的版本時,通常有部分程式碼是可以重新檢視使用的,或是對於已經上線的系統,業務單位提出取消新的活動方案時,可以迅速回歸到上一版的資料。有時也會遇到需要平行開發2個小差異的版本系統,等決策後再擇其一版繼續往下開發,而作廢另一個版本,諸多考量都會影響版次的選擇與變更定案,有定版功能將會使檔案版本管理變得簡單。

02. Branch/tag首先對要定版的資料夾點選右鍵,選擇TortoiseSVN項下的Branch/tag



03. 在路徑上,To path裡輸入定版的名稱,範例是/SVNtest-v1,再點選OK


04. 會出現COPY Finished! 以及版次訊息,直接點選OK即可。

 

13. Switch 切換版本

01. 前面定版後,可以切換到定版的資料夾
02.對著定版的文件或資料夾,按右鍵選擇TortoiseSVN / Switch


03. 一樣在路徑.To path:輸入已定版的資料夾名稱/SVNtest-v1 ,再按OK


04. 會出現Switch Finished!的訊息,點選OK(這個功能可以讓使用者游走於各個定版的資料夾內,隨時可以作切換的動作)


 




14. 比對定版資料

01. 對資料夾按右鍵,選擇TortoiseSVN / Repo-browser


02. 可看出定版前後的資料夾,內容是一致的,定版後的資料夾通常不會繼續更新,而是繼續更新原來的版本,不同的階段進度會有不同內容的定版,命名是建議要以容易辨識及版次明確為原則。

 




15. 差異性比較,可檢視與前版的資料差異

 

01. 首先將一份已經有作SVN版本控制的檔案,進行變更後,會出現紅色驚嘆號

02. 再按右鍵進行SVN Commit


03. 勾選要更新上傳的檔案,並按OK


04. 上傳完成 Commit Finished~,點選OK。


05. 對變更的檔案,按右鍵選擇TortoiseSVN / Diff with previous version(與前版比較)


06. 比較結果可分為四大區塊:包含原始文件的內容區、修訂的文件內容區、綜合比對區、文字描述差異性區。


 



16. Update to revision
17. 版本更新,直接對檔案按右鍵,選擇TortoiseSVN / Update to revision


18. Export:將檔案從主機匯出到本機使用者端。
19. Repo-browser:會自動記錄上一次連線的主機URL,不用重新輸入。


20. Setting: 設定
21. 版本訊息


22. 回到上一個資料夾


23. 當用戶端的檔案有所變更,尚未把最新版本上傳到主機時,會出現紅色的驚嘆號,提示使用者要記得更新檔案。

官方網站及資料參考來源:

1. TortoiseSVN官方網站: http://tortoisesvn.net/
2. Ankhsvn官方網站: http://ankhsvn.open.collab.net/
3. Subclipse官方網站: http://subclipse.tigris.org/
4. Subversive官方網站: http://www.eclipse.org/subversive/
5. SCPlugin官方網站: http://scplugin.tigris.org/
6. SVNx官方網站: http://code.google.com/p/svnx/
7. eSVN官方網站: http://sourceforge.net/projects/esvn/
8. RabbitVCS官方網站: http://rabbitvcs.org/
9. http://tw.myblog.yahoo.com/tonywangblog2011-tonywangblog2011/article?mid=306
10. http://fannys23.pixnet.net/blog/post/25838586
11. http://www.joetsuihk.com/svn_%E6%A6%82%E5%BF%B5_%E5%88%9D%E9%9A%8E%E4%BD%BF%E7%94%A8
12. http://yanpos.myweb.hinet.net/SVNteach/