TortoiseSVN 同步分支


對比工具可以使用 winmerge 和 beyond compare ,winmerge免費小巧,beyond compare功能更強大。這兩款工具都比TortoiseSVN自帶的對比工具要好一些。

在TortoiseSVN中的配置方法:

winmerge安裝時勾選集成到TortoiseSVN

beyond compare要復雜一些,右鍵,TortoiseSVN - 設置,

差異查看器( Diff Viewer ),設置用來比較不同版本文件的程序( comparing different revisions of files ),設置用來比較不同版本屬性的程序( comparing different revisions of properties ),勾選外部,輸入

" D:\Program Files\Beyond Compare 3 \BComp.exe " %base %mine /title1=%bname /title2=%yname /leftreadonly

差異查看器/合並工具( Merge Tool),勾選外部,輸入

" D:\Program Files\Beyond Compare 3\BComp.exe " %mine %theirs %base %merged /title1=%yname /title2=%tname /title3=%bname /title4=%mname

紅色部分為beyong compare的路徑,要帶雙引號。

創建本地版本庫

要測試TortoiseSVN的功能,總不能在公司的正式服務器上亂搞把,所有先要創建一個測試的版本庫。

新建一個文件夾,名字不要用中文,進入文件夾,點擊右鍵TortoiseSVN - 在此創建版本庫。

TortoiseSVN會在這個文件夾創建版本庫,並且會彈出一個提示框

點擊“創建目錄結果”,然后啟動版本庫瀏覽器,就可以看到版本庫的目錄結構

通過點擊“創建目錄結果”,TortoiseSVN自動創建了3個文件夾, branches,tags,trunk, 很多人都會使用TortoiseSVN,但是對這三個目錄去取不了解。 

trunk目錄

主干目錄,一般情況下是在此目錄下進行代碼的開發,這個目錄應該存放最新的代碼。

tags目錄

代碼的版本標記,這個目錄的代碼不允許更改,比如,軟件發了1.0版本,就需要將1.0版本的代碼在tags中放一份拷貝,發了2.0,就要在tag中標記一個2.0。如果1.0軟件出現了bug,開發人員要驗證bug,直接從tag中取1.0版本的代碼就可以了,不會把個個版本混淆。

branches目錄

分支 目錄,用於開發新功能或解決老版本的bug。比如,1.0版本上線,開發人員全力投入2.0版本的開發,但是,1.0版本突然出現了一個bug必須要修復,而且很緊急,不能等到2.0版本上線,這時候該怎么辦呢。正確的做法是,從tag中取1.0版本的代碼,建立一個新的分支,開發人員在這個分支上解決1.0發現的bug,解決完成並測試通過之后,在tag中添加一個新的版本標記,比如1.1,然后關閉這個分支。如果1.1再出現bug,那么從1.1建立分支,以此類推,直到2.0出現。

加入和檢出工程

由於版本庫是本地,我們可以通過文件路徑來訪問,右鍵TortoiseSVN - 版本庫瀏覽器,輸入

file:///F:/svn_test/

F:/svn_test/就是剛才創建版本庫的文件夾

打開版本庫瀏覽器,在trunk目錄點擊右鍵,加入文件夾,加入一個新的Android工程TestSVN。

然后將這個工程檢出

.settings bin gen這三個目錄和代碼無關,要先忽略掉,選中這三個目錄,右鍵 TortoiseSVN - 去除版本控制並增加的忽略列表。

提交代碼后,這3個文件夾有改變的話不會有提示。

修改代碼

刪除文件 ,正確的做法是在要刪除的文件上點擊右鍵 - TortoiseSVN - 刪除。

還原修改 ,右鍵 - TortoiseSVN - 還原。

重命名 ,同樣,右鍵 - TortoiseSVN - 改名。

增加文件 ,右鍵 - TortoiseSVN - 增加,文件會變成小加號

移動文件 ,直接打開版本庫瀏覽器拖動,或者剪切,提交

解決沖突 ,沖突形成的原因是兩個人同時修改了一個文件的同一個地方,

例如:原始文件為,版本為1

package com.example.test;

public class Test { String test = null; public Test(String test){ this.test = test } }

A和B都checkout這個文件,A修改了文件並進行提交,文件版本變為2

package com.example.test;

public class Test { String test = null; public Test(String test){ this.test = "test" } }

B修改了文件

package com.example.test;

public class Test { String test = null; public Test(String test){ this.test = "aaa" } }

這時候,如果B更新文件,就會提示沖突

沖突原因是兩人同時在版本1上進行了修改。

這時要求B對比對比A做的修改和自己的修改,同A溝通后確定最終的代碼,然后進行合並。

這里用B的代碼為最終代碼,修改方法為:

在沖突文件點右鍵 - TortoiseSVN - 編輯沖突,在最下面的編輯框沖突的地方,也就是是紅色嘆號的位置點擊右鍵

選擇使用“我的”文本塊,合並后的代碼為:

package com.example.test;

public class Test { String test = null; public Test(String test){ this.test = "aaa" } }

去掉了this.test = test,增加了this.test = "aaa",保存,彈出窗口

選擇標記為解決,沖突的嘆號就沒有了,文件就可以正常的提交了。

如果使用beyond compare的3路合並工具的話,代碼更加的直觀

左邊為B修改后的文件,中間為原始文件,右邊為A修改后的文件,最下邊為合並后的文件。點擊藍色小箭頭使用左邊文件,點擊黃色小箭頭使用中間文件,點擊紫色小箭頭使用右邊文件。

修為完成保存后,要手動標記為解決,右鍵 - TortoiseSVN - 解決。

創建分支和標記

說白了就是在其他的文件放一份拷貝,打開版本庫瀏覽器,在要創建分支或標記的工程目錄上點擊右鍵

選擇復制到,輸入目標路徑,分支是branches,標記是tags

最好輸入日志信息,這樣就實現了分支或標記

可以通過分支圖查看,每增加一個分支,版本號加一。

創建和應用補丁

如果有多個分支,比如XXX紀念版,XXX專版,XXX增值版,修改一個地方要同步到多個分支,是個很麻煩的事情,這時候可以用補丁來解決。

還是使用上面的工程,有一個主干和兩個分支,主干中有一個 Test.java 文件

public class Test { private String test; public Test(String test) { this.test = test; } }

將 “this.test = test;” 修改為 “this.test = "aaa";”

在文件夾的空白處點右鍵 - TortoiseSVN - 創建補丁,選擇修改的文件,點確定,創建一個Test.java.patch的補丁

在檢出的分支中點擊右鍵 - TortoiseSVN - 應用補丁,補丁效果如下

合並

在要合並的副本點擊空白處點擊右鍵 - TortoiseSVN - 合並,

選擇第三個選項,

關於起始和結束的url,查看版本分支圖

結束的必須大於起始的的版本號,我想把b1分支的版本5合並到主干,就按下圖填寫

提交代碼后再次查看版本分支圖

主干的版本號升級為6,合並完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM