/* syntax highlight */ /* end of syntax highlight */

2011年11月20日 星期日

SVN 學習筆記

Bookmark and Share

svn

之前在做專案時就用過類似  svn 的工具,不過從今天開始就要加入部門的開發 team 裡面,也是應該來學習一下 SVN 使用的標準流程,順便筆記一下。

 

SVN 概念

SVN 是管理程式碼的工具,可以幫助一整個開發人員 team 保持一個穩定的開發流程,並同時達成版本控制的目的,您可以在任何時間回復到之前所存的任一版本,且可以根據歷史紀錄去檢視你的資料是如何被改變的。

 

SVN 邏輯

SVN 主要是會有一個集中管理的 SVN Server ,儲存最新的程式碼及檔案,而各自開發者則屬於 SVN Client ,可從 Server 執行 Checkout 的動作,以將最新版本的資料 download 下來,因此,只要一開始成員討論好資料夾存放的格式,之後就可以讓大家更快速找到資料,概念如下圖:

checkout

圖片來源:http://0rz.tw/JcVhi

 

檔案修改過後,變成最新版本是在本地 Client 端,但開發團隊的其他成員可能也會需要看到這些最新的資料,則每個 Client 在可再 Update 最新的資料到 Server 上面,這樣的行為稱為 Commit 動作,示意圖如下:

commit

圖片來源:http://0rz.tw/JcVhi

 

一般來說,每個開發 Team 都要討論一個定期 Commit 的時間 (ex. 每天午餐時間) ,以避免有人太久沒有 Update 最新資料,導致其他成員同步修改同一個檔案 (如 Source Code) 的狀況。

然後,如果要更新其他成員新 Commit 上去 Server 的檔案或原始碼,我們需要執行 Update 的動作,以確保自己的 Code 與 Server 同步,示意圖如下:

update

圖片來源:http://0rz.tw/JcVhi

 

 

 

SVN 衝突

當團隊成員 A 與成員 B 同時針對同一份檔案進行修改時,如果兩人都同時 Commit 的話,就會發生衝突 (conflict),檔案上面會出現驚嘆號,如下圖所示:

image

image 

圖片來源:http://www.csie.ntut.edu.tw/sdrc/files/course/20061201/VersionControlWithSVN.pdf

解決的方式為,成員之間進行溝通,並由其他一個代表送出代表的版本。

 

Tortoise SVN

一般在 Windows 環境下使用 SVN ,都會搭配 TortoiseSVN,官方網站在 這裡,安裝流程可參考 此篇文章,可將相關 SVN 指令轉成 GUI 介面,便於操作,示圖如下:

image

 

SVN 標準作業流程

1. 先更新檔案 (ex. SourceCode) 的最新版本

2. 檔案進行修改

3. Commit 之後,看一下是否有 conflict ,如果有的話,比對及討論一個正確的版本

4. 確認 Commit 最新版本到 Server 上面

 

SVN 新增檔案流程

1. 一開始請先新增一個檔案

 image

 

2. 按右鍵,選擇 Add ,表示將資料加入 Repository

image

 

3. 指標變成藍色,表示待 Commit

 image

 

4. 按右鍵選擇 Commit

 image

 

5. 接下來按確認之後,檔案會變成綠色的勾勾,則算完成此流程。

image

 

Trunk、Branch、Tags

使用 SVN 還需要了解 Trunk、Branch、以及Tag 的概念,簡單來說定義如下

Branch:存放各自Client修改的版本,所有開發、錯誤修正、QA相關的議題

Trunk:存放穩定的版本

Tags:存放 Major Released 給客戶端的版本,如果有 Bug 可以客戶的版本為基礎來修正

 

也就是說,假設我們有一個 EndDevice 的專案,則在 SVN 上面會建成以下的資料夾結構

image

因此,專案管理的流程為:

(1) 在本地端資料夾建立 Branch、Trunk 兩個資料夾 (不需要 Tag)

image

(2) 將程式碼建立在 trunk 當中,

(3) 如果有特別的 issue 要解,則 copy 一個版本移至 branch 當中做修訂

(4) branch 修訂「確認」之後,再 merge 到 Trunk 資料夾當中

(5) 如果有需要 Released 給客戶的版本,則從 Trunk Commit 一份到 SVN 上面的 Tag 資料夾當中,並注意 Tag 裡面的版本為 Released 的版本,不可修訂,只可新增

 

參考資料

  1. Tortoise SVN
  2. 淺談版本控制系統
  3. Wikipedia
  4. Installing Subversion to Windows Vista
  5. SubTrain - Open Source Trainings for Subversion: 教導如何使用 SVN
  6. Version Control with Subversion
  7. Version Control with Subversion PDF - 作者: 邱茂森
  8. SVN Checksum Error

0 意見:

張貼留言

Related Posts Plugin for WordPress, Blogger...