基於SVN構建版本機及所遇到的問題-2

接續“基於SVN構建版本機及所遇到的問題-1”。


2、發佈

項目右鍵菜單“發佈”後,並修改文件夾:

image.png


點擊“發佈”按鈕,輸出窗口提示如下:

image.png


進入資源管理器查看本地項目目錄:

image.png


Publish目錄還是問號,先後執行Add(右鍵彈出菜單-->ToitorseSVN-->Add)和Commit(右鍵彈出菜單-->Commit),變爲綠勾:

image.png


交付人員可以在其他PC上使用TortoiseSVNcheckout這個發佈目錄,並部署之。


5.5 Update

SVN多半都是由許多人共同使用。同樣的檔案可能還有人會去進行編輯。爲了確保工作目錄中的代碼文件與Repository是同步的。在編輯前都先進行更新的動作。前提是:已經將代碼文件check out過一次。

 

假設另外一個同事通知你修改了Program.cs,則點擊Program.cs右鍵彈出菜單的“Update”:

image.png


執行Update後顯示:

image.png

表示更新完成。

 

儘管推薦按文件更新,但是萬一不知道更新了哪個文件,可以執行解決方案的右鍵彈出菜單的Update”,來更新整個解決方案。


5.6 Update to Revision

如果想要回退到某個老版本,可以使用該功能:

image.png


執行後:

image.png


點擊Show log”:

image.png


點擊版本1確認:

image.png


執行OK


image.png


成功更新到版本1.


5.7 Branch

建立分支的目的可能有:

(1)開發分支:從主幹複製一份來修改,修改完了後合併到主幹。

(2)老版本分支:老版本已經封閉,新版本準備開發,但是老版本還需要修改需要修改,於是從主幹分出一份來繼續老版本的修改。

(3)測試版本/正式版本分支:發佈軟件測試版本或者正式版本,用來測試部署或者正式部署。

(4)補丁版本分支:因爲bug還需要建個補丁,不包括全部文件,保留需要更新的文件即可。

 

後兩種實際上都是Release,這些版本有特別的意義,特別的Milestone或是release給客戶的版本。後兩種都不需要mergetrunk中。舉例來說,今天我們的trunk做了一版,這個版本被認定是軟件的1.0版。1.0版對於開發來說是一個非常重要的里程碑。所以我們要特別爲他做一個標記,亦即Tag。假設,這個 1.0版是要正式release給客戶或是相關vendor,我們要可以爲他做一個Release的標記。基本上,SVN只有目錄的概念,並沒有什麼 Tag的用法。所以SVN的菜單上面,BranchTag是同一個菜單。以這個1.0的例子來說,就是在Trunk上面,按下鼠標右鍵,選擇Branch/Tag的菜單。

 

首先,建個branches目錄,並AddCommit,結果如下:

image.png


然後,右鍵菜單:


image.png


執行Branch/tag...:

image.png


上圖的Log Message”應該輸入一些說明文字。點擊OK後:

image.png


分支V1.1建立成功,但是要先更新branches目錄才能看到:

下圖看到branches目錄是空的:

image.png


執行update後看到:

image.png


還可以指定版本建立分支:

image.png


5.7 Merge

在開發分支上開發的代碼文件往往需要合併到主幹(trunk),有時候老版本分支和補丁分支也需要合併到主幹中。

 

5.2節建立的項目的主幹在哪裏?實際上就是D:\測試項目\TestProject

 

先修改V1.1這個branch的文件:

image.png


上圖的Program.cs正在修改中或者是代碼文件在本地已經被修改,圖標上的感嘆號就是這個意思。Commit後表示V1.1和主幹不同了。

 

在資源管理器該目錄下空白處右鍵:

image.png


執行Merge...”:

image.png


選擇第一個,next >”:

image.png


URL to merge from”下面,點擊“...”選擇需要合併分支。

Revision range to merge”中指定需要合併的revision,這裏選擇版本5

點擊Next...”:

image.png


點擊Test merge”先測試一下:

image.png


這表示合併很可能不會錯誤,確認後返回,點擊Merge”:

image.png


進入主幹目錄:

image.png


感嘆號表示Program.cs已經被修改了。檢查一下內部代碼,即可提交。

 

5.7 conflictrevert

當有兩個人同時編輯一個文件,第一個人提交時是正常的,第二個人提交時會提示更新工作副本,點確定更新時會出現版本衝突。當一個文件出現衝突時,文件的圖標爲×××的感嘆號。

提交後提示錯誤:

image.png

再如:

image.png

對於每個衝突的文件,SVN在你的目錄下放置了三個文件

image.png


這個時候,一種選擇:先Update再提交。但是,可能會在代碼文件中出現:

<<<<<<< .mine

       6666666666666600000

=======

      66666666666aaaaaaaaaa666

>>>>>>> .r16

 

所以,最好是選擇revert

image.png


這時候,放棄了自己的修改。然後再使用備份文件重新修改回來。

 

還有兩種選擇:

1、在衝突提示上右鍵菜單有三個選項:

(1)直接標記已解決,相當於忽略;

(2)theirs爲準,就是放棄自己,承認其他人修改的

image.png

(3)mine爲準,就是堅持自己,拋棄其他人的

2、刪除工作目錄,重新拉取代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章