Linux基礎——013_SVN使用

SVN使用

上一篇講了SVN搭建和項目經理要進行的一些操作,現在來看一下程序員如何做》
程序員只需要同步倉庫當中的代碼,這步操作執行檢出操作就行。(右擊==》SVN Checkout)

我創建了一個root文件夾當做程序員倉庫目錄,下面所有的操作都是在這個文件夾下執行的。

1、常用指令

Checkout 檢出指令:第一次和svn倉庫進行連接的時候,下載倉庫當中的代碼到本地,一般情況下只執行一次。
Commit 提交指令:每次完成工作之後都需要執行一次提交操作, 把自己寫的東西提交到svn服務器倉庫
Update 更新指令:在開始工作之前,把倉庫當中的代碼同步到本地,保證本地的代碼是最新的版本。
Add 添加指令 :把自己的文件添加到提交列表

2、文件的批量提交

直接在工作空間右擊==》SVNCommit, 加上註釋進行提交。
在這裏插入圖片描述
在這裏插入圖片描述
注意: 新增文件夾下的新增文件不能提交,需要回到上一級文件夾進行提交

現在項目已經提交到服務器倉庫當中了,現在項目經理svn_client_rep當中update一下即可查看最新提交。
在這裏插入圖片描述
同步結果:
在這裏插入圖片描述

3、SVN圖標認識

在這裏插入圖片描述

4、SVN使用細節

先來理一下思路:
在這裏插入圖片描述

1、SVN存儲機制

svn使用差異存儲,每次提交的時候,只存儲跟上一個版本有差異的地方。
在倉庫目錄Library下的db目錄如下:
在這裏插入圖片描述
這裏存放着每個版本的具體信息的目錄revprops (存放版本日誌信息)和 revs(存放版本信息)

2、忽略文件

有的時候在本地工作空間會放一些和項目無關的參考文件,這些文家不需要提交到服務器倉庫當中去,只是供自己參考,那麼怎麼不讓他和其他的文件一起提交導服務器倉庫當中去呢???
svn提供一種方法是忽略文件,操作方法是右擊==》TortoiseSVN ==》添加到忽略列表(add to ignore list)
在這裏插入圖片描述
點出來之後有四個選項:(psd只是文件後綴,會隨着忽略的文件的後綴改變)
(1)文件.psd 忽略當前文件
(2)* .psd 忽略當前目錄下的所有的叫做.psd的文件
(3)文件.psd(recursively) 英文單詞是遞歸的意思,所以在目錄包括目錄當中的文件夾當中的所有叫做這個名稱的.psd文件
(4)* .psd(recursively) 遞歸項目所有目錄當中的.psd文件。

我們選擇的是第四個,遇到這種文件的時候就對其進行忽略,還有一個點需要注意:這次修改也得提交一次,屬性修改也算修改。

3、版本回退(小心有坑)

在進行版本回退之前需要知道我們要返回的是哪個版本。查看歷史版本的方法是直接從空白地方右擊 ==> TortoiseSVN ==> show log 顯示頁面如下:
在這裏插入圖片描述版本回退演示:
選多個選項當中的update to revision,輸入版本序號,就可以更新到那個版本。
在這裏插入圖片描述出現坑的地方現在纔開始介紹……
假如說在這個版本上進行index.html 的修改,之後再進行一次提交會發生什麼呢??
在這裏插入圖片描述之後提示是否update,更新之後出現了三個新的文件:
在這裏插入圖片描述
這三個是錯誤提示文件,當中存儲着每個版本當中都存在的和當前版本存在的不同。

關於衝突的幾句話
(1)出現衝突的是客戶端,服務端一切正常(不用擔心代碼受損的問題)
(2)遇到衝突去解決,不解決衝突無法提交代碼
(3)保留自己要提交的代碼,標記衝突爲解決,提交即可

注意:在版本回退之後,不要在歷史版本當中修改代碼【只是用於查看,並不能用於直接修改】,先更新到最新版本,之後再寫代碼提交。
在這裏插入圖片描述
那麼如何解決上述衝突,接着往下看。

4、版本衝突

內容不相同,修改一下內容就好了。
在這裏插入圖片描述

不相同的地方,svn使用||||||和>>>>>>進行標記,所以爲了成功上交,把衝突修改掉,如果是有用的代碼就進行保留,沒用的就刪除,我選擇都保留。

現在svn還不知道我們已經解決了衝突,那麼我們通過標記告訴他一下:空白處右擊 ==》TortoiseSVN ==》resolve, 代表衝突已經解決了。重新Commit一次,代碼提交成功。

5、配置多倉庫

同一個服務器有的時候需要同時運行很多項目,但是項目都得由一個服務器進行管理,那麼就在svn_server_rep 目錄下創建Blog文件夾。之後在一個位置對倉庫進行檢出。
在這裏插入圖片描述檢出之後是下面這個樣子滴:
在這裏插入圖片描述這很明顯是剛纔的Library項目當中的文件,這是爲什麼??還記不記得checkout 的時候出現瞭如下頁面:
在這裏插入圖片描述

剛纔啓動的服務是Library倉庫的服務,所以第一個框的localhost定位的就是Library倉庫,所以檢出的就都是Library倉庫裏面的文件。

對於這種情況我們使用二級目錄進行解決,什麼意思??
就是重新定位,把localhost定位到svn_server_rep文件夾,檢出的時候使用localhost/Blog 或者是localhost/Library 進行倉庫的定位。

既然是這樣,那麼重新啓動服務器,svnserve -d -r D:\svn\svn_server_rep
之後檢出使用二級路徑:svn://localhost/Blog
在這裏插入圖片描述那麼我們剛纔使用的Library更新的時候會怎麼樣呢??
在這裏插入圖片描述

不出所料,的確是錯的,因爲localhost定位的是svn_server_rep文件夾,所以出現了錯誤,解決辦法是重新定位:右擊 ==》 TortoiseSVN ==》 Relocate
在這裏插入圖片描述再進行一次更新,更新成功:
在這裏插入圖片描述

6、權限控制

012當中,提到過svn默認是不能進行匿名提交的,我爲了方便操作,就把access設置成了write,但是這樣是相當危險的,這要是別人對我們的倉庫進行一頓提交,那還得了???

所以svn擁有權限控制機制,可以限制用戶對倉庫的讀寫權限。
權限控制分爲認證(Authentication)和授權(Authorization)
認證:用戶名和密碼 【鑑別用戶身份】 對應文件:passwd
授權:判斷用戶是否擁有某種權限 對應文件:authz
在這裏插入圖片描述這些文件都存在於服務器倉庫的Library文件夾下面的conf目錄下。

現在要做的是把svnserve.conf文件當中的access = write修改掉。
在這裏插入圖片描述
access = none 不允許匿名用戶連接
passwd-db = passwd 【指定賬戶密碼的數據庫】
authz-db = authz 【指定認證參考的數據庫】

接下來開始設置密碼和執行權限。打開passwd文件夾,寫入用戶和密碼(按照他的提示進行編寫):
在這裏插入圖片描述
在authz文件當中設置用戶權限
在這裏插入圖片描述
我自己設定的Library倉庫的權限是admin讀寫,mr.white只讀。

重啓都不需要重啓,直接進行update,出現瞭如下頁面:
在這裏插入圖片描述
這樣權限管理就完成了。

5、SVN服務的自啓動和批處理命令

1、創建自啓動

有時候需要服務器開啓的時候就啓動SVN服務來管理項目,而且小黑框一直開着也很礙事,不小心關了就尷尬了。所以需要設置開機自啓動。

創建svn服務的命令:sc create 服務名稱 binPath= “服務器安裝目錄\svnserve.exe -r 服務器地址目錄 --service” start= auto
管理員權限運行cmd,輸入增加服務指令

sc create svn binPath= (記得這裏有空格)“D:\svn\svn_server\bin -r D:\svn\svn_server_rep --service” start= (注意這裏也有空格)auto
在這裏插入圖片描述
–service 說明是服務
start= auto 說明是自動啓動

通過服務查看到svn服務已經添加
在這裏插入圖片描述

2、批處理指令

net start svn 啓動服務
net stop svn 停止服務
net restart svn 重啓服務
在這裏插入圖片描述

回到目錄:Linux基礎14篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章