Svn項目管理工具
1 svn介紹
1.1 項目管理中的版本控制問題
通常軟件開發由多人協作開發,如果對代碼文件、配置文件、文檔等沒有進行版本控制,將會出現很多問題:
- 備份多個版本,占用磁盤空間大
- 解決代碼沖突困難
- 容易引發BUG
- 難於追溯問題代碼的修改人和修改時間
- 難於恢復至以前正確版本
- 無法進行權限控制
- 項目版本發布困難
1.2 什麽是版本控制
版本控制(Revision control)是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若幹文件內容變化,以便將來查閱特定版本修訂情況的系統。
1.3 svn是什麽?
SVN(Subversion)是近年來崛起的版本管理工具,在當前的開源項目裏(J2EE),幾乎95%以上的項目都用到了 SVN。Subversion 項目的初衷是為了替換當年開源社區最為流行的版本控制軟件 CVS,在 CVS的功能的基礎上有很多的提升同時也能較好的解決 CVS 系統的一些不足。
1.4 svn的使用方法
svn是基於客戶/服務器模式:
復制-修改-合並方案(Subversion默認的模式):
在這種模型裏,每一個客戶讀取項目配置庫建立一個私有工作副本——版本庫中文件和目錄的本地映射。用戶並行工作,修改各自的工作副本,最終,各個私有的復制合並在一起,成為最終的版本,這種系統通常可以輔助合並操作,但是最終要靠人工去確定正誤。
鎖定-修改-解鎖方案:
在這樣的模型裏,在一個時間段裏配置庫的一個文件只允許被一個人修改。 此模式不適合軟件開發這種工作。
1.5 svn服務器的工作方式
獨立服務器方式:
svnserve
借助Apache方式:
mod_dav_svn
SVN版本數據存儲方式
BDB (Berkeley DB)
數據庫方式
FSFS
文件方式 (推薦)
2 svn服務端安裝配置
2.1 兩種服務端安裝包
2.1.1 官方安裝包
官方網站:http://subversion.apache.org/
下載:http://subversion.apache.org/download.cgi
官方提供的服務端安裝包,安裝後需要通過命令行操作,適用於專業配置管理員使用。
2.1.2 圖形化服務端
誌願者開發的圖形化操作界面的svn服務端,它適用於普通軟件開發人員使用。
下載地址:https://www.visualsvn.com/downloads/
2.2 安裝圖形化服務端
查看程序菜單:
查看服務,VisualSVN成功啟動:
2.3 創建倉庫
svn服務端創建完成需要創建倉庫,倉庫中存放要版本控制的文件。
通過開始菜單進入VisualSVN server manager:
選擇文件存儲方式:
創建一個空的倉庫:
設置用戶訪問倉庫權限:
倉庫創建成功:
倉庫地址為https://ip地址或計算機名/svn/倉庫名稱
2.4 創建工程目錄
倉庫中存放開發項目代碼、文檔等,需要創建一個工程目錄。
創建成功:
trunk:項目開發代碼的主體,是從項目開始直到當前都處於活動的狀態,從這裏可以獲得項目最新的源代碼以及幾乎所有的變更歷史信息。
branch:從trunk的某個點分離出來的代碼拷貝,通常可以在不影響主幹的前提下在這裏進行重大bug的修改,或者做實驗性的開發,以及定制功能開發等。如果分支達到了預期的目的,通常可以被合並(Mgerge)到主幹中。
tag:用來表示trunk和branch的某個點的狀態,以代表項目的某個穩定狀態,通常為最終發布狀態。
工程目錄創建完成,查看它的svn地址:
拷貝svn地址:
3 TortoiseSVN客戶端
3.1 svn客戶端類型
svn客戶端需要通過網絡訪問svn服務端提交文件、查詢文件等,可通過以下客戶端類型訪問svn服務端:
1、使用Subversion提供的客戶端命令
使用方式:在命令行下輸入命令操作。
2、使用Torotise圖形化界面操作(推薦)
3、使用Eclipse等開發工具插件操作(推薦)
3.2 下載安裝
TortoiseSVN是Subversion版本控制系統的一個免費開源客戶端,不需要為使用它而付費。
TortoiseSVN是 Subversion 的 Windows 擴展。它使你避免接觸 Subversion 枯燥而且不方便的 Command Line。它完全嵌入 Windows Explorer,使用時只需在正常的窗口裏右鍵操作就可以了
下載:http://tortoisesvn.net/downloads.html 提供 32位和64位不同版本,安裝tortoiseSVN 需要修改客戶端電腦右鍵菜單,安裝後需要重啟電腦。
3.3 瀏覽倉庫
使用Tortoise瀏覽svn服務端的倉庫的內容:
4 權限管理(了解)
4.1 認證授權機制
在企業開發中會為每位程序員、測試人員等相關人員分配一個賬號,用戶通過使用svn客戶端連接svn服務時需要輸入賬號和密碼,svn服務對賬號和密碼進行校驗,輸入正確可以繼續訪問,當用戶訪問倉庫下某個目錄時,svn服務對用戶進行授權,如果用戶擁有該目錄的訪問權限方可訪問。
判斷賬號和密碼輸入是否正確的過程即認證過程。
判斷用戶是否擁有目錄的讀/寫權限時即授權過程。
4.2 創建用戶
查看已創建的用戶:
修改用戶:
4.3 創建組
查看創建的組:
修改組:
4.4 分配僅限
給倉庫下的每個目錄分配權限對訪問進行控制。
4.4.1 刪除默認權限
刪除系統安裝後默認權限:
4.4.2 示例一:開發人員擁有讀寫權限
進入權限分配界面:
添加組或用戶:
分配權限:
繼承父目錄權限、不可訪問、讀權限、讀/寫權限
訪問時輸入賬號:
登陸測試是否有讀/寫權限:
4.4.3 示例二:測試人員擁有讀權限
登陸測試是否有讀/寫權限:
4.4.4 清除認證緩存
有幾種情況需要清除認證緩存:
1、本地使用多個賬號登陸,每次輸入的賬號和密碼都不一樣
2、當賬號密碼修改後(建議清理)
5 TortoiseSVN日常使用
5.1 瀏覽倉庫
Repo-browser : 瀏覽倉庫中資源信息
5.2 導入導出
Export :導出項目 ,和checkout區別 (checkout檢出後文件,含有.svn隱藏文件夾, 會和SVN倉庫交互, export導出,沒有.svn隱藏文件夾)
import 將本地資源導入到svn 服務器
5.3 修改提交
5.3.1 Checkout
檢出項目,復制項目的副本到本地。
在要檢出的目錄中右鍵:
5.3.2 add
在檢出的目錄中添加文件:
圖標: 這是一個新文件
n Add to ignore list :添加到忽略列表 (標記該文件不需要版本控制 )
n Add : 標記這個文件添加到服務器
已經標記要添加到版本庫
5.3.3 Commit
當檢出目錄或子目錄中內容有修改,目錄圖標變為:
提交Commit 提交本地修改至svn服務器:
在檢出目錄或要提交修改的目錄右鍵:
提交後目錄中的內容與svn服務同步,目錄圖標變為:
5.3.4 update
更新倉庫的文件到本地
在檢出目錄或子目標或文件上右鍵:
5.3.4.1 更新到最新版本
5.3.4.2 更新到指定版本
5.3.5 Delete
Delete :刪除版本庫文件
標記刪除後,本地文件刪除,標記刪除後需要提交。
5.3.6 恢復
在檢出目錄或子目錄操作會記錄操作日誌,提交前可以回滾操作。
在要回滾的檢出目錄或子目錄中右鍵:
5.4 沖突處理
兩個客戶端同時修改同一個文件, 改動同一個位置,發生沖突情況
如果當commit 遇到文件已經過時,說明另一個人可能改動過 ----- update
db.properties 將本地和服務器合並到一起的文件 (不要直接看)
db.properties.mine 我本地自己修改後的文件
db.properties.r16 我修改之前的文件
db.properties.r17 別人修改後的文件
手動Merge 後,需要將編輯後沖突文件,標記為已經解決 , 再進行commit
Svn項目管理工具