image.png
@[toc]
進階知識-Linux下版本控制器(SVN)
5、命令行客戶端
5.1 創建兩個工作區目錄模擬兩個開發人員
mkdir -p /root/workspace/harry
mkdir -p /root/workspace/sally
5.2 檢出
作用:完整下載版本庫中的全部內容。
-
命令:
svn checkout svn://192.168.70.140/pro_oa ./
-
附加效果
- 在指定目錄下創建.svn目錄
- 保存本地目錄和文件狀態信息,用來和SVN服務器進行交互
-
工作副本
- .svn所在的目錄
- 版本控制相關操作都需要在工作副本目錄下執行。例如:提交、更新等等這樣的操作。
- 為了保證工作副本能夠正常和服務器進行交互,請不要刪除或修改.svn目
錄中的內容。
5.3 添加
-
SVN要求提交一個新建的文件前先把這個文件添加到版本控制體系中。
svn add文件名
5.4 提交
-
要求1:附加日志信息
- 日志信息相當于寫Java代碼時的注釋,用來標記本次操作所做的修改。
svn commit -m "xxx" [文件名]
-
要求2:必須具備相應的權限
- 使用文本編輯器打開版本庫根目錄/conf/svnserve.conf文件
image.png
[root@rich harry]# svn commit hello.txt
svn:提交失敗(細節如下):svn:“/root/workspace/harry/hello.txt”尚未納入版本控制
[root@rich harry]# svn add hello.txt
A hello.txt
[root@rich harry]# svn commit hello.txt
svn:提交失敗(細節如下):
svn:無法使用外部編輯器獲得日志信息;考慮設置環境變量 $SVN_EDITOR,或者使用--message (-m)或 --file (-F)選項
svn:沒有設置 SVN_EDITOR,VISUAL或 EDITOR環境變量,運行時的配置參數中也沒有“editor-cmd”選項
[root@rich harry]# svn commit -m "My first commit" hello.txt
svn:提交失敗(細節如下):
svn:認證失敗
[root@rich harry]# svn commit -m "My first commit" hello.txt
增加 hello.txt
傳輸文件數據.
提交后的版本為 1。
5.5 查看服務器端文件內容
[root@rich harry]# svn list svn://192.168.70.140/pro_oa
good.log
hello.txt
5.6 更新操作
- 作用:把服務器端文件所產生的所有修改下載到本地
命令:svn update [文件名]
5.7 沖突
5.7.1 過時的文件
概念:在一個相對服務器端版本來說是舊版本的基礎上進行了修改的文件。
要求:所有過時的文件都必須先執行更新操作,更新后在最新版基礎上修改的
文件才允許提交。
5.7.2 沖突的產生
條件1:本地當前編輯的文件已經過時。
條件2:從服務器端更新下來的修改和本地的修改在“同文件同位置”不一致。
5.7.3 沖突的表現
- 文件內
image.png
- 目錄內
image.png
xxx.mine文件
:發生沖突時本地文件內容
xxx.r[小版本號]文件
:發生沖突前文件內容
xxx.r[大版本號]文件
:發生沖突時服務器端文件內容
5.7.4 沖突的手動解決
第一步:刪除沖突發生時產生的三個多余文件
第二步:刪除沖突文件內多余的符號
第三步:把文件編輯到滿意的狀態
第四步:提交
5.7.5 沖突的半自動解決
- 設置SVN_EDITOR環境變量
image.png
vim /etc/profile
-------------------------------------------
SVN_EDITOR=/usr/bin/vim
export SVN_EDITOR
-------------------------------------------
source /etc/profileecho $SVN_EDITOR
-
解決的過程
- 使用e選項進入文件內容編輯界面
image.png
- 進入vim編輯器編輯文件內容
image.png
- 編輯完成后使用r選項標記為已解決
image.png
5.7.6 減少沖突的發生
盡可能在修改文件前先進行更新操作,盡量在最新版基礎上修改文件內容。
盡量減少多人修改同一個文件的可能性。
加強團隊成員之間的溝通。