1. 程式人生 > >Svn項目管理工具

Svn項目管理工具

svnserve list 機制 沒有 cgi ger 交互 nbsp 圖標

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項目管理工具