本文總結了完成乙個需求開發所需知道的svn基本指令。
第一次從倉庫裡獲取**
$ svn checkout [your_repository_url]
如果已有本地**,則需要更新**,確保在最新**上開發
$ cd [your_local_codes_path]
$ svn update
svn倉庫中,trunk分支一般存放通過測試的最新**,因此不應該在該分支下修改**。合理的做法是:從trunk分支切出乙個feature分支,然後在該分支下修改**,直到測試通過後合併到trunk分支。
$ svn
copy
[your_trunk_url]
[your_feature_branch_url]
-m[your_log]
-m
填寫建立分支的日誌
從trunk分支切換到feature分支
$ svn switch [your_feature_branch_url]
$ svn status
該命令顯示的格式為:狀態檔案,常見的狀態有:
字元狀態說明a
新增與上一版相比增加的檔案c衝突
該檔案衝突d刪除
該檔案已從倉庫刪除,以後svn不再跟蹤版本m修改
該檔案被修改過
s處於其他分支
當前分支的子路徑處於其他分支
?未納入版本管理
通常是新增檔案,svn還沒跟蹤該檔案的版本。可以使用svn add
把檔案加入svn,此時再執行svn status
時,檔案的狀態就顯示為a
!檔案缺失
svn找不到該檔案。一般出現在沒有使用svn命令刪除檔案的情況。當需要從倉庫刪除某檔案時,應該使用svn delete
,這樣檔案的狀態就變為d,提交以後該檔案的版本就不再被跟蹤
開發完成後向遠端分支提交**
$ svn commit -m [your_log]
一般情況下**就提交到遠端分支了,但是如果有人和你修改了同一段**,並且先提交到了遠端分支,就會導致本次提交失敗,此時需要先解決衝突再提交**。
更新**,顯示衝突
$ svn update
$ conflict discovered in [your file]
select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tf) theirs-conflict,
(s) show
all options:
符號說明p
標記衝突,暫不處理
df顯示所有衝突
e編輯衝突
mc衝突以本地檔案為準
tf衝突以遠端倉庫為準
s顯示所有選項
一般先輸入df
命令看衝突是否嚴重,如果不嚴重則通過e
直接編輯,編輯頁面通常為
<<<<<<< .mine
[your_version]
*****==
[their_version]
>>>>>>> [version]
在<<<<<<< .mine
和>>>>>>> [version]
之間解決衝突,然後儲存。回到select介面,此時會多出乙個(r) resolve
的命令。輸入r
通知svn已解決衝突。
如果衝突很嚴重,需要和提交者討論解決,可以輸入p
標記,此時輸入svn status
顯示:
c
[your_file]
? [your_file]
.working
? [your_file]
.merge-left.[version]
? [your_file]
.merge-right.[version]
檔案
說明[your_file]
所有衝突標記在該檔案
[your_file].working
當前工作副本
[your_file].merge-left.[version]
產生衝突前基礎版本
[your_file].merge-right.[version]
倉庫裡的最新版本
用以下命令解決衝突
$ svn resolve --accept [base | working | mine-conflict
| theirs-conflict
| mine-full
| theirs-full
][conflicting file]
引數
說明base
將[your_file].merge-left.[version]做為最終結果
working
把[your_file]解決衝突後的結果做為最終結果
mine-conflict
將[your_file].working做為最終結果
theirs-conflict
將[your_file].merge-right.[version]做為最終結果
mine-full
將所有[your_file].working做為最終結果
theirs-full
將所有[your_file].merge-right.[version]做為最終結果
解決衝突後,檔案狀態變為m,這時再向倉庫提交**即可。
feature分支通過測試後就可以合併到trunk分支。首先切換到trunk分支,然後執行以下命令
$ svn merge [your_feature_branch_url]
merge還具有回滾的功能:svn merge -r old:new .
。注意不要少最後乙個點,這表示把new版本會滾到old版本
順利的話,feature分支就合併到trunk分支了,但是如果有別人和你修改了同一段**並且提交到trunk分支就可能再次出現衝突。同樣先解決衝突再提交。
完成功能開發,合併到trunk後,刪除feature分支
$ svn
delete
[your_feature_branch_url]
-m[your_log]
以上就是開發過程中常用的svn命令,當然svn的命令是非常豐富的,想要更強大的功能可以通過svn help
來進一步學習。 svn 使用總結
最近做專案使用 svn,不怎麼上手,蒐集了下資料,學習一下。使用svn常見的問題和解決方法如下 1 更新時提示檔案發生衝突 one or more files are not a conflicted state。多人同時修改同一檔案的同一部分,svn無法自動進行合併,會導致該錯誤 解決方法 對工作...
svn使用總結
1 svn使用教程參考 2 svn分支管理 trunk 表示開發時版本存放的目錄,即在開發階段的 都提交到該目錄上。branches 表示發布的版本存放的目錄,即專案上線時發布的穩定版本存放在該目錄中。tags 表示標籤存放的目錄。唯讀 svn中trunk,branches,tags用法詳解 bra...
SVN使用總結
一般情況subversion已經包含在很多linux發行版中了,可以使用命令檢查 svn version 和 svnadmin version,如果這兩條命令都沒問題,那麼subversion已經安裝完畢了。1.建立目錄 mkdir home svn 2.建立專案倉庫 svnadmin create...