專案管理svn
2 svn介紹
2.1 專案管理中的版本控制問題
通常軟體開發由多人協作開發,如果對程式碼檔案、配置檔案、文件等沒有進行版本控制,將會出現很多問題:
- 備份多個版本,佔用磁碟空間大
- 解決程式碼衝突困難
- 容易引發BUG
- 難於追溯問題程式碼的修改人和修改時間
- 難於恢復至以前正確版本
- 無法進行許可權控制
- 專案版本釋出困難
2.2 什麼是版本控制
版本控制(Revision control)是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。
2.3 svn是什麼?
SVN(Subversion)是近年來崛起的版本管理工具,在當前的開源專案裡(J2EE),幾乎95%以上的專案都用到了 SVN。Subversion 專案的初衷是為了替換當年開源社群最為流行的版本控制軟體 CVS,在 CVS的功能的基礎上有很多的提升同時也能較好的解決 CVS 系統的一些不足。
2.4 svn的使用方法
svn是基於客戶/伺服器模式:
n 複製-修改-合併方案(Subversion預設的模式)
在這種模型裡,每一個客戶讀取專案配置庫建立一個私有工作副本——版本庫中檔案和目錄的本地對映。使用者並行工作,修改各自的工作副本,最終,各個私有的複製合併在一起,成為最終的版本,這種系統通常可以輔助合併操作,但是最終要靠人工去確定正誤。
n 鎖定-修改-解鎖方案
在這樣的模型裡,在一個時間段裡配置庫的一個檔案只允許被一個人修改。 此模式不適合軟體開發這種工作。
2.5 svn伺服器的工作方式
獨立伺服器方式:
svnserve
藉助Apache方式:
mod_dav_svn
SVN版本資料儲存方式
BDB (Berkeley DB)
資料庫方式
FSFS
檔案方式 (推薦)
3 svn服務端安裝配置
3.1 兩種服務端安裝包
3.1.1 官方安裝包
官方網站:http://subversion.apache.org/
下載:http://subversion.apache.org/download.cgi
官方提供的服務端安裝包,安裝後需要通過命令列操作,適用於專業配置管理員使用。
3.1.2 圖形化服務端
志願者開發的圖形化操作介面的svn服務端,它適用於普通軟體開發人員使用。
下載地址:https://www.visualsvn.com/downloads/
3.2 安裝圖形化服務端
檢視程式選單:
檢視服務,VisualSVN成功啟動:
3.3 建立倉庫
svn服務端建立完成需要建立倉庫,倉庫中存放要版本控制的檔案。
通過開始選單進入VisualSVN server manager:
選擇檔案儲存方式:
建立一個空的倉庫:
設定使用者訪問倉庫許可權:
倉庫建立成功:
倉庫地址為https://ip地址或計算機名/svn/倉庫名稱
3.4 建立工程目錄
倉庫中存放開發專案程式碼、文件等,需要建立一個工程目錄。
建立成功:
trunk:專案開發程式碼的主體,是從專案開始直到當前都處於活動的狀態,從這裡可以獲得專案最新的原始碼以及幾乎所有的變更歷史資訊。
branch:從trunk的某個點分離出來的程式碼拷貝,通常可以在不影響主幹的前提下在這裡進行重大bug的修改,或者做實驗性的開發,以及定製功能開發等。如果分支達到了預期的目的,通常可以被合併(Mgerge)到主幹中。
tag:用來表示trunk和branch的某個點的狀態,以代表專案的某個穩定狀態,通常為最終釋出狀態。
工程目錄建立完成,檢視它的svn地址:
拷貝svn地址:
4 TortoiseSVN客戶端
4.1 svn客戶端型別
svn客戶端需要通過網路訪問svn服務端提交檔案、查詢檔案等,可通過以下客戶端型別訪問svn服務端:
1、使用Subversion提供的客戶端命令
使用方式:在命令列下輸入命令操作。
2、使用Torotise圖形化介面操作(推薦)
3、使用Eclipse等開發工具外掛操作(推薦)
4.2 下載安裝
TortoiseSVN是Subversion版本控制系統的一個免費開源客戶端,不需要為使用它而付費。
TortoiseSVN是 Subversion 的 Windows 擴充套件。它使你避免接觸 Subversion 枯燥而且不方便的 Command Line。它完全嵌入 Windows Explorer,使用時只需在正常的窗口裡右鍵操作就可以了
下載:http://tortoisesvn.net/downloads.html 提供 32位和64位不同版本,安裝tortoiseSVN 需要修改客戶端電腦右鍵選單,安裝後需要重啟電腦。
4.3 瀏覽倉庫
使用Tortoise瀏覽svn服務端的倉庫的內容:
5 許可權管理(瞭解)
5.1 認證授權機制
在企業開發中會為每位程式設計師、測試人員等相關人員分配一個賬號,使用者通過使用svn客戶端連線svn服務時需要輸入賬號和密碼,svn服務對賬號和密碼進行校驗,輸入正確可以繼續訪問,當用戶訪問倉庫下某個目錄時,svn服務對使用者進行授權,如果使用者擁有該目錄的訪問許可權方可訪問。
判斷賬號和密碼輸入是否正確的過程即認證過程。
判斷使用者是否擁有目錄的讀/寫許可權時即授權過程。
5.2 建立使用者
檢視已建立的使用者:
修改使用者:
5.3 建立組
檢視建立的組:
修改組:
5.4 分配僅限
給倉庫下的每個目錄分配許可權對訪問進行控制。
5.4.1 刪除預設許可權
刪除系統安裝後預設許可權:
5.4.2 示例一:開發人員擁有讀寫許可權
進入許可權分配介面:
新增組或使用者:
分配許可權:
繼承父目錄許可權、不可訪問、讀許可權、讀/寫許可權
訪問時輸入賬號:
登陸測試是否有讀/寫許可權:
5.4.3 示例二:測試人員擁有讀許可權
登陸測試是否有讀/寫許可權:
5.4.4 清除認證快取
有幾種情況需要清除認證快取:
1、本地使用多個賬號登陸,每次輸入的賬號和密碼都不一樣
2、當賬號密碼修改後(建議清理)
6 TortoiseSVN日常使用
6.1 瀏覽倉庫
Repo-browser : 瀏覽倉庫中資源資訊
6.2 匯入匯出
n Export :匯出專案 ,和checkout區別 (checkout檢出後文件,含有.svn隱藏資料夾, 會和SVN倉庫互動, export匯出,沒有.svn隱藏資料夾)
n import 將本地資源匯入到svn 伺服器
6.3 修改提交
6.3.1 Checkout
檢出專案,複製專案的副本到本地。
在要檢出的目錄中右鍵:
6.3.2 add
在檢出的目錄中新增檔案:
圖示: 這是一個新檔案
n Add to ignore list :新增到忽略列表 (標記該檔案不需要版本控制 )
n Add : 標記這個檔案新增到伺服器
已經標記要新增到版本庫
6.3.3 Commit
當檢出目錄或子目錄中內容有修改,目錄圖示變為:
提交Commit 提交本地修改至svn伺服器:
在檢出目錄或要提交修改的目錄右鍵:
提交後目錄中的內容與svn服務同步,目錄圖示變為:
6.3.4 update
更新倉庫的檔案到本地
在檢出目錄或子目標或檔案上右鍵:
6.3.4.1 更新到最新版本
6.3.4.2 更新到指定版本
6.3.5 Delete
Delete :刪除版本庫檔案
標記刪除後,本地檔案刪除,標記刪除後需要提交。
6.3.6 恢復
在檢出目錄或子目錄操作會記錄操作日誌,提交前可以回滾操作。
在要回滾的檢出目錄或子目錄中右鍵:
6.4 衝突處理
兩個客戶端同時修改同一個檔案, 改動同一個位置,發生衝突情況
如果當commit 遇到檔案已經過時,說明另一個人可能改動過 ----- update
db.properties 將本地和伺服器合併到一起的檔案 (不要直接看)
db.properties.mine 我本地自己修改後的檔案
db.properties.r16 我修改之前的檔案
db.properties.r17 別人修改後的檔案
手動Merge 後,需要將編輯後衝突檔案,標記為已經解決 , 再進行commit
7 eclipse的SVN外掛使用
7.1 svn外掛安裝
下載Subversion的eclipse外掛
http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA
下載 site-1.10.11.zip,本教程將此zip放在D盤。
下邊是在STS上安裝svn外掛步驟:
1、進入STS軟體安裝介面
2、安裝svn外掛
上邊命令列輸入:SVN - jar:file:/d:/site-1.10.11.zip!/
點選下一步。
接受協議,完成:
出現提示,選擇繼續安裝:
安裝完成,檢視STS檢視有SVN選項說明安裝成功:
7.2 將專案共享到SVN
新建SVN倉庫連線 , 切換“SVN資源庫” 檢視
共享專案到SVN
7.3 從svn檢出
將svn管理專案檢出到工作區
7.4 解決衝突
手動merge後,標記為解決
7.5 重置使用者名稱密碼
刪除C:\Users(使用者)\"你的使用者名稱"\AppData\Roaming\Subversion\auth\下的所有檔案