天天看點

[iOS_Dev] svn 指令行

[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