[iOS_Dev] svn 指令行
1. 打開 終端
2. cd <你的項目 本地全路徑>
3. svn 指令行
//
1、初始化項目
svn import /Users/cress/本地項目目錄 https://server/項目目錄 -m "Initial import"
2、下載下傳項目
svn checkout https://server/項目目錄
3、添加檔案
svn add test.txt
4、送出添加的檔案,或者本地做的修改送出到伺服器端
svn commit -m "add test.txt by test"
5、删除項目中的相應内容
svn delete https://server/項目目錄/檔案名稱 -m "delete test.txt for test"
svn delete /Users/cress/本地項目目錄 -m "delete test.txt for test"
6、更新最新版本
svn update
svn update -r 200 test.txt (更新指定的版本)
7、檢視本地修改的檔案狀态
svn status
8、單純導出一個幹淨的項目内容(項目内容不帶有svn隐藏記錄資訊)
svn export https://server/項目目錄
9、加鎖/解鎖
svn lock /Users/cress/本地項目目錄(或檔案名)-m "批注"
svn unlock /Users/cress/本地項目目錄(或檔案名)
10、檢視日志
svn log test.txt
11、比較差異
svn diff -r m:n test.txt (對版本m和版本n比較差異)
12、合并兩個版本
svn merge -r 12:14 text.txt (把版本12和14之間的差異合并到目前的檔案中)
13、svn幫助
svn help
svn help commit
14、沖突合并
svn resolve --accept working test.txt
14、恢複本地修改
svn revert [-R] something
something可以是(目錄或檔案的)相對路徑也可以是絕對路徑。
當something為單個檔案時,直接svn revert something就行了;當something為目錄時,需要加上參數-R(Recursive,遞歸),否則隻會将something這個目錄的改動。
14.2 復原到指定的版本
svn update -r 復原到的版本号 如:svn update -r 2113
送出復原
svn ci -m “注釋” 如:svn ci -m "添加子產品協調者之前的标簽"
14.3 複制一個項目
svn copy 原位址 目标位址
如:svn copy http://58.249.55.68:8091/product/MicroAPP/02-iPhone/02-code/03-Tag/MicroAPP-v3.1.1-2112-20140630 http://58.249.55.68:8091/product/MicroAPP/02-iPhone/02-code/02-Branch/MicroAPP-v3.1.1-2112-20140630 -m "添加子產品協調者的分支"
15、代碼庫URL變更
svn switch <branch_full_url> (切換分支)
svn switch --relocate <from_url> <to_url> [path] (切換資源庫)
switch用于在同一個版本庫内不同分支之間的切換
relocate用于版本庫通路位址變更時,重新定位版本庫
比如,由于SVN伺服器更換到另一台主機上,這是SVN伺服器的位址改變了,那麼各用戶端就無法連接配接SVN伺服器了,這時各用戶端就需要執行relocate,将本地工作區的連接配接到新的伺服器上去
而如果同一個版本庫内,如果有多個分支,比如你現在正在trunk上開發,但需要切換到某個分支上開發,那麼你可以用switch來進行這個切換操作,這時SVN會比較trunk和這個分支之間的差異,将差異部分傳送到你的本地工作區,而不用将整個分支傳送給你,進而避免巨量資料的傳輸。switch操作之後,你所進行的update、commit操作都變成了針對那個分支,當你在分支上的工作完成後,還可以再次switch回trunk。
switch還有另外一些用途,比如希望讓分支中的某個檔案夾保持和trunk同步,因為有人正在trunk的這個檔案夾中進行開發,在分支中想用到開發的最新成果,那麼就可以在分支的這個檔案夾上設定swtich到trunk,這時update整個分支的話,就會把trunk上的這個檔案夾取下來了。但是,當然你如果修改了這個檔案夾的内容,commit後也是送出到了主幹而不是送出到了分支。
16、打标簽
每達到一個裡程碑都應該給代碼打個标簽。
打基線---就是打标簽,隻是加上文檔等資料
标簽的特點?
隻讀
如何打标簽?
Versions工具不能打标簽,要打标簽就要使用指令終端,通過指令來輸入。
打标簽其實就是執行複制:svn copy。
svn copy 指令不是真正複制真實的檔案,而是隻是對各個檔案做版本記錄,
不占多大的伺服器空間。
svn copy 指令格式:
svn copy 源URL 目的URL -m “注釋”
12、打分支
什麼時候該打分支?
當主線項目需要添加一個新的功能,而這個功能需要開發比較長的時間。在新功能開發的這段時間内,主線的項目還需要繼續修改Bug,發新版本。這種情況下,就需要另起個分支,用來開發新功能,而且不影響主線程的進度。
分支開發注意的地方:
1)主線盡量不要改變分支上要更改的檔案
2)分支盡量代碼獨立
如何打分支?
打分支和打标簽是一樣的,指令也是 svn copy,格式也是一樣的。
14、合并代碼
在分支上開發代碼完成後,就需要把分支的代碼合并到主線程,有時特殊需要,也會把主線的代碼合并到分支中。
合并分支要注意的地方:
1)要記錄打分支時的版本号
2)要記錄每次合并代碼的版本号
如何合并代碼?
例子:把分支的代碼合并到主線中
終端指令進入主線代碼的跟目錄,執行如下指令:
svn merge –r 打分支時版本号或者上次合并的版本号:HEAD 分支URL