軟件開發的過程是個復雜、耗時、耗力的過程。通常要有很多開發人員參與編寫代碼。
這樣就會出現種種代碼管理混亂的問題,這些問題容易引發BUG,增加開發人員的工作量,增加軟件開發與維護的成本。因此項目中會使用配置工具管理這些代碼,解決上訴問題。
市面上常用的兩種配置管理工具:SVN,GIT
這邊文章要和大家介紹的就是SVN
什么是SVN呢,下圖給出了SVN與開發們之間的關系
SVN的作用:
解決代碼管理混亂問題
不用備份多個版本,占用磁盤空間大
解決代碼沖突
不易引發bug
可以追溯問題代碼的修改人和修改時間
容易恢復至以前正確版本
可以進行權限控制
降低項目版本發布難度
如何使用SVN呢?
一、環境配置
1. 安裝SVN服務器
雙擊打開SVN服務器安裝程序
點擊“Next”按鈕
勾選“I accept the terms in the License Agreement”復選框,點擊“Next”按鈕
勾選“VisualSVN Server and Administration Tools”單選框並勾選“Add Subversion command-line tools…”復選框,並點擊“Next”按鈕
點擊“Standard Edition”按鈕,選擇安裝類型
選擇好程序安裝路徑和后續項目的文檔存放文件的位置和端口號后點擊“Next”按鈕
如下圖顯示443端口被占用,點擊“OK”按鈕
修改端口為8443,點擊“Next”按鈕
點擊“Install”按鈕
等待安裝
安裝完成,不選中復選框,點擊“Finish”按鈕
我們進入之前選擇的程序安裝路徑下的bin目錄看是否有svnadmin.exe和svnserve.exe兩個文件
設置環境變量的目的就是使得程序安裝路徑 D:\Program Files\VisualSVN Server\bin 下的svnadmin.exe和svnserve.exe兩個程序可以直接使用
2、安裝SVN客戶端
雙擊“TortoiseSVN”客戶端安裝程序
等待安裝
點擊“Next”按鈕
點擊“Next”按鈕
選擇客戶端程序的安裝路徑(可以根據個人喜好選擇,小編選擇了D:\Program Files\TortoiseSVN),再點擊“OK”按鈕
跳轉到了之前的界面,可以看到路徑已經更改成功了,點擊“Next”按鈕
點擊“Install”按鈕
等待安裝
安裝完成,點擊“Finish”按鈕
桌面右擊,菜單欄里顯示有“TortoiseSVN”,表示SVN客戶端安裝成功
二、SVN Manager工具在SVN服務器上創建用戶、組、版本庫並設置版本庫的訪問權限
服務器安裝完成后,我們在服務器上創建用戶、組、版本庫並設置版本庫的訪問權限
1、打開SVN服務器管理程序
點擊開始菜單---點擊“所有程序”---點擊“VisualSVN”---點擊“VisualSVN Server Manager”啟動SVN服務器管理程序
跳出SVN服務器管理界面
2、服務器中創建用戶
右擊左側導航欄中的“Users”,點擊"Create User…"創建新用戶
跳出創建新用戶窗口,輸入即將創建的用戶名,用戶密碼,並確認密碼(通常用戶名和密碼都是參與項目的,並使用SVN這個工具的人員進行設置的)
小編隨手創建的幾個用戶
創建好了之后就可以在SVN服務器管理界面的右側內容窗口中看到設置好的用戶,下面是小編創建的幾個用戶
3、服務器中創建項目組
用戶創建好了之后就可以創建項目組了,右擊導航欄中的“Groups”--點擊“Creat Group”
輸入組名,點擊“Add”按鈕選擇需要添加到組里的用戶,再點擊“ok”按鈕
4、創建版本庫並設置版本庫的訪問權限
右擊左側導航欄中的“Repositories”,點擊“Creat New Repository”創建版本庫(方便用戶登錄SVN配置管理器在創建的版本庫中存取數據)
跳出創建新倉庫的界面,選擇“Regular FSFS repository”(常規FSFS倉庫),再點擊“下一步”按鈕
輸出即將創建的倉庫名稱(寫當前的項目名稱,便於使用和管理),再點擊“下一步”按鈕
選擇“Empty repository”(空倉庫),再點擊“下一步”按鈕(實際公司項目選擇下面一種帶有目錄的倉庫比較多)
勾選“Customize permission”(自定義權限/允許),點擊“Custom…”
設置權限的類型(1、沒有使用權 2、只讀 3、讀寫),點擊“確定”按鈕
點擊“Add…”按鈕,選擇可以擁有權限的人(可以選擇整個組,也可以選擇特定的用戶)
跳轉界面,顯示倉庫中的組已經創建成功(可以看到倉庫的類型:FSFS,)
瀏覽SVN服務器上的版本庫的方式(兩種)
方法一、SVN Manager工具中,選擇庫后點擊browse(瀏覽)
在SVN Manager窗口左側導航欄中找到想要瀏覽的庫,右擊--點擊browse瀏覽
輸入用戶名,密碼,點擊“登錄”按鈕
成功訪問
方法二、用SVN客戶端登錄瀏覽
右擊桌面---點擊“TortoiseSVN”----點擊“Repo-browser”
輸入要訪問的版本庫的URL地址,格式如下
輸入用戶、密碼,點擊“OK”按鈕
成功登錄(這邊小編的版本庫還是空的!)
注意
我們使用SVN客戶端訪問服務器上的版本庫時,必須保證服務器上的VisualSVN Server服務是開啟的
我們可以打開服務窗口查看該服務是否開啟,具體操作如下
版本庫目錄下的文件的作用
conf文件夾---配置文件(權限)
authz=authorization 存放用戶或組的權限(讀、寫)
passwd=authorization 存放用戶和密碼
svnserve.conf 存放SVN服務器的配置文件
db----存放數據
hooks---鈎子腳本:自動觸發部署
locks---上鎖
TortoiseSVN圖標集
文件夾常規:表示本地文件夾與服務器上的文件相匹配
文件夾沖突:commit本地文件夾時顯示與服務器上的文件沖突(通查出現在多人同時編寫同一個文本的情況下)
文件夾已刪除:服務器上已經沒有這個文件夾了
文件夾無版本控制:新建文件夾還未添加到服務器上
添加文件夾:在本地新建文件夾雖然add,但還未commit到服務器上
文件夾被修改:文件夾被修改,還未commit到服務器上
文件夾只讀:文件夾只允許用戶閱讀
鎖定:文件夾被鎖定,除了施加鎖定的那個用戶其他用戶均無法修改服務器上的這個文件夾
文件被修改:文件修改過后,還未commit到服務器上
文件常規:文件夾與服務器上的文件一致
文件沖突:文件與服務器上的文件沖突
SVN客戶端基本圖形化操作
Check out (將服務器上的版本內容遷出到本地里)
圖形界面創建的版本庫的簽出
方法一
在本地創建一個空的文件夾,進入文件夾后,右擊空白處--點擊“SVN Checkout”
輸入需要簽出版本庫的URL地址(格式:https://IP:port/svn/版本庫名稱),點擊“OK”按鈕
輸入有訪問該版本庫權限的用戶即密碼,點擊“OK”按鈕
點擊“OK”按鈕
方法二、使用客戶端瀏覽服務器上的項目文件
桌面右擊---點擊“TortoiseSVN”--“Repo-browser”
輸入要訪問版本庫的URL地址
將SVN服務器上的版本庫簽到本地的條件及成功狀態:
- 服務器上的VisualSVN Server是開啟的
- 本地地址的文件夾是空文件夾
- 簽出成后該文件夾會顯示打勾的狀態
Add 添加文件
在簽出的文件夾里新建文件test1.txt
內容如下
右擊需要添加到SVN服務器上的文件---點擊“TortoiseSVN”---點擊“Add”
點擊“OK”按鈕
點擊“OK”按鈕
添加完后的文件圖標會從問號變為加號
Commit 提交(add、修改)
一種情況:add后commit
在我們的Checkout到本地的文件夾中新建一個test2.txt文件
右擊test2.txt--add
文本圖標就會顯示+號
右擊test2.txt---SVN Commit,提交到服務器上
第二種情況:我們修改完文件,要commit到服務器上
右擊要提交的文件---點擊“SVN Commit”
Update 更新
右擊要更新的文件或文件夾---“SVN Update”
Delete 刪除(刪除之后要commit,才會生效)
右擊要刪除的文件或文件夾---“TortoiseSVN”---“Delete”
Rename 重命名(從命名后空白處右擊commit)
改名后需要在空白處右擊--點擊“SVN Commit”或者進入上一層目錄右擊---點擊“SVN Commit”
將文件名由“test2.txt”改為“test.txt”
空白處右擊---點擊“SVN Commit”或者進入上一層目錄右擊---點擊“SVN Commit”
Revert 還原(恢復到文件修改之前的版本)
修改文件內容后,在未commit之前,我們可以右擊文件---“TortoiseSVN”---“Revert”將文件還原到修改內容之前的文件版本
Show log 顯示日志
export(導出,但不在版本庫內,修改不影響版本庫)
方法一、登錄SVN客戶端,右擊要導出的文件所屬的文件夾---點擊“Export”---選擇存放的本地路徑
方法二、右擊Checkout到本地的文件夾---點擊“TortoiseSVN”---點擊“Export”---選擇存放的路徑
Import 導入
右擊要導入的文件所在文件夾,點擊“TortoiseSVN”---“Import”
Get lock 鎖定(鎖定后的文本其他人編譯后無法commit)
右擊要鎖定的文本---點擊“TortoiseSVN”---點擊“Get lock”
Release lock 解鎖(鎖定的人主動解鎖后,其他人可以編譯並commit)
右擊鎖定的文本或文件---點擊“TortoiseSVN”---點擊“Release lock”
Diff 差異比較
右擊要進行差異比較的文件---點擊“TortoiseSVN”---選擇一種差異比較方式
Edit Conflict 處理沖突
1、兩個開發編寫同一個代碼文件
2、第一個開發編寫好代碼后commit 提交到服務器上
3、第二個開發未先Update,也直接修改了文件,然后commit,提交到了服務器上
4、提示需要先Update,但選擇Update后提示無法更新,有Conflict
5、這是第二個開發需要解決沖突,本地文件中會出現以下的幾個文件
6、右擊需要解決沖突的文件(有沖突的文件上會有黃色感嘆號的標志)---點擊“Edit conflict”
7、根據沖突內容人工判斷解決,最后commit
Update to revision(更新版本到哪個版本)
右擊需要更新版本的文件---點擊“TortoiseSVN”---點擊“Update to revision”
可以通過show log 查看文件的日志信息,便於回到哪個版本的文件
relocate(服務器IP地址變了,可以用來更新地址)
工作當中要養成習慣,工作之前先Update,再鎖定
增、刪、改都要commit
用命令行創建版本庫
1、建立版本庫
打開dos命令窗口,輸入svnadmin create e:\Repositories\版本庫名稱
(Repositories指的是服務器安裝時指定的版本庫目錄,這里輸入的路徑要和安裝服務器時指定的路徑一樣)
2、配置e:\Repositories\conf文件夾下的三個文件
Svnserve.conf:SVN服務器的配置文件,講一下配置取消注釋
passwd:存放用戶和密碼,如增加一下用戶和密碼
authz文件:存放用戶或組的權限(讀、寫),配置如下
3、啟動服務
輸入svnserve -d -r e:\Repositories
-d指服務作為一個獨立的端口監控進程,--r即批定要暴露的倉庫路徑,如本機倉庫路徑為E:\Repositories\項目,那么客戶端svn訪問時只需采用如下地址即可訪問:svn://ip/項目,E:\Repositories 就不需要展示出來,客戶端svn訪問時只需采用如下地址即可訪問:svn://ip。(注意,ip后面不要跟端口號)
如果輸入svnserve -d -r e:\Repositories\版本庫名稱
Subversion的標准目錄結構
Trunk-----主開發目錄
Branches-----分支開發目錄
Tags----tag存檔目錄,不允許修改