概述
SVN 全稱 SubVersion,是一個開放源代碼的版本控制系統,它的特點是操作簡單,支持跨平臺操作,支持版本回退
SVN 屬于 C/S 結構軟體,分客戶端和服務端:
- 服務端軟體:VisualSVN
- 客戶端軟體:TortoiseSVN
SVN 的作業原理如下,SVN 服務器會把代碼整合記錄每一次的改動歷史,開發人員通過以下基本命令便能與 SVN 服務器完成互動:
- Checkout(檢出):當你手上沒有源代碼的時候,你需要從 SVN 服務器 checkout 一份
- Update (更新):當你已經 checkout 一份源代碼, Update 可以讓你的本地源代碼和 SVN 服務器的源代碼同步
- Commit(提交):當你已經修改了代碼,就需要 Commit 到 SVN 服務器

SVN 服務端安裝與配置
服務器端軟體存盤與服務端,下載地址:https://www.visualsvn.com/downloads/
一直點擊下一步,在選擇組件界面時,建議按照如圖:

選擇安裝位置和資料倉庫

SVN 服務端配置:
- 創建一個專案
- 首先在 SVN 服務端目錄創建一個公有目錄 WebApp 作為專案目錄
- 在 WebApp 目錄下創建專案檔案夾,比如 Shop 檔案夾,作為專案的版本倉庫
- 創建版本倉庫,基本語法:
svnadmin create [檔案夾目錄]
- 進行服務器端監管
- 通過指令:
svnserve -d -r [監管檔案夾目錄]監管專案 - 通過 SVN://localhost或者 IP 地址就可以直接指向 Shop 版本倉庫
- 通過指令:
- 權限控制
- SVN 服務器默認不允許匿名用戶上傳檔案到服務端
- 在專案檔案夾找到 conf/svnserve.conf 修改配置為:
anon-access:write
SVN 客戶端安裝與配置
SVN 客戶端下載地址:https://tortoisesvn.net/downloads.html
一直點擊下一步即可,安裝完成以后,使用客戶端連接 SVN 服務器,在本地專案目錄右鍵,選擇 TortoiseSVN - 版本庫瀏覽器,輸入 SVN 服務器地址,如 svn://localhost,由于設定了 SVN 服務器監管 Shop 專案,所以會自動指向 Shop 專案
單擊檢出,就會自動檢出資料到客戶端,如果客戶端專案目錄出現了 .svn 隱藏目錄就代表成功了

開發人員通過更新拉取代碼,在本地進行開發,在專案目錄右鍵 SVN 提交即可提交代碼到服務端,和· Git 沒有太大差別


SVN 使用詳解
1. 圖示集

常規:客戶端檔案與服務端檔案完成同步
沖突:客戶端提交檔案與服務端檔案有沖突
已洗掉:服務端檔案已洗掉
增加:客戶端檔案已添加到提交佇列
無版本控制:客戶端檔案沒有添加到提交佇列
修改:客戶端檔案有修改但未提交
只讀:客戶端檔案為只讀形式
鎖定:服務端檔案已鎖定
忽略:客戶端檔案不需要提交上傳
2. 版本沖突
在實際專案開發中,如果兩個人同時修改某個檔案就會產生版本沖突,當發生沖突時,更新服務器資料到本地,假設沖突檔案為 index.php,則會產出以下檔案:
- index.php:系統自動整合后的 index.php 檔案
- index.php.mine:后提交者修改后的 index.php 檔案
- index.php.r6:index.php 后的 r6 代表版本號,不同的專案也不同,這里表示 index.php 的起始狀態
- index.php.r7:前提交者修改后的 index.pho 檔案
要解決版本沖突,只需要洗掉除 index.pho 以外的檔案,修改 index.php 檔案的內容,解決沖突再提交即可
3. 配置多倉庫
在 SVN 中一個專案就稱為一個倉庫,實際開發中,我們可能同時開發多個專案,這時需要進行多專案監管,可以通過監管 WebApp 總目錄來達到監管所有倉庫的目的
svnserve -d -r [WebApp目錄]
如果要訪問對應的專案,URL 也有變化:svn://localhost/Shop
4. 權限控制
首先要開啟權限功能,每一個倉庫中都有 conf 檔案夾,里面有兩個檔案:
- authz:授權檔案,標識哪些用戶具有哪些權限
- passwd:認證檔案,標識某個倉庫具有哪些用戶以及相應密碼
默認情況下,以上兩個檔案都是禁用的,如需要使用,要在對應專案的 svnserve.conf 配置如下:
# 注釋匿名用戶的可讀寫權限
# anno-access=write
# 開啟授權與認證檔案
password-db=passwd
authz-db=authz
修改 passwd 檔案,定義相關用戶和密碼
admin=admin888
修改 authz,設定分組
# 組名=用戶串列,用戶串列以逗號分隔
admin=admin
[Shop:/]
# 擁有可讀可寫權限
@admin=rw
# 匿名用戶只有可讀權限
*=r
5. 鉤子程式
所謂鉤子就是版本庫事件觸發的程式,例如新修訂版本的創建,或者未版本化屬性的修改,在版本倉庫的 hooks 目錄下包含各種版本庫鉤子模板,常用的鉤子程式有 post-commit.tmpl:提交完成后所觸發的鉤子程式
復制一份 post-commit.tmpl,洗掉里面的內容,重命名為 post-commit.bat,通過批處理指令撰寫鉤子程式:
# 設定服務端svn路徑
SET SVN="D:\svn\bin\svn.exe"
# 設定web服務器作業目錄
SET DIR="D:\server\apache\shop"
# 通過update指令實時更新資料到DIR目錄
SVN update %DIR%
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/468751.html
標籤:其他
上一篇:linux基本使用
下一篇:LINUX系統虛擬機環境的安裝
