今天在使用 svn 的過程中遇到了這麼乙個問題:
我們在乙個月前從主幹上拉出了乙個分支,乙個月的開發過去了,發現不論是分支還是主幹上都進行了非常繁雜的修改,此時我們的測試要求先把主幹上的**合併到分支上進行測試,那麼現在問題來了,如何將主幹上的**合併到分支上呢?有關 svn 的合併的問題,其實都可以在這篇部落格裡得到答案:
svn合併(merge)的使用
那麼,我寫的這篇部落格,就是對於我遇到這個問題,對於一些概念進行深刻的理解。
首先,我們要確定,合併(merge)究竟意味著什麼?
合併要有根基:合併的根基是什麼?
我們合併合併,就相當於說,我們已經基於了乙個版本進行合併,那麼這個根基是什麼你要分析出來。在引言裡的例子中,我們要使分支合併主幹的**,那麼我們的根基就是分支上最新的版本,這一點很重要又很容易被忽略
合併的目標範圍:合併的開始版本是什麼?合併的結束版本是什麼?
我們注意到使用 svn 的合併過程中會讓你選擇合併的開始版本和結束版本。而這裡的開始版本是什麼呢?是我們的根基的最新**嗎?不一定。我們還是要去理解我們到底要幹什麼。
我們要將主幹上的**全部拿到分支上,那麼我們其實就看到了乙個範圍,什麼範圍呢?主幹從分離出分支的那個版本開始,到主幹上最新的版本。也就是說,我們這裡應該填寫的範圍,就是主幹上分離分支的那個版本開始,到主幹的最新版本結束。
如圖:填寫目標版本的範圍
我們要合併**,就要填寫目標版本的範圍,在上面的概念理解清楚之後,將範圍寫到裡面即可
說了這麼多,其實也就是這麼乙個總結:
不論我們的 svn 如何合併,我們都要認清楚兩個地方:認識到以上這兩點,找到根基、找到範圍,我們就可以尋找到正確的分支副本,寫上正確的目標**範圍,因此也就可以輕而易舉並且清晰清楚的完成 svn **合併工作了。1. 我們究竟是根基與什麼版本進行合併
2. 我們究竟要將什麼範圍的目標**合併到根基上
svn 分支 合併
儘管svn沒有作強制要求,但是一般svn版本庫目錄建議建立trunk branches和tags三個目錄。在實際操作時,trunk主幹版本要時刻保持乾淨,即隨時可以基於這個版本進行修改並將應用部署上線。branches是分支目錄,存放並行開發的專案 因為分支是主幹的廉價拷貝 相當只是提交了一次主幹版...
SVN分支與合併
合併 合併的工作是把主線或者分支上合併範圍內的所有改動列出,並對比當前副本的內容,由合併者手工修改衝突。如果當前工作副本是主線的,則合併的範圍是分支上的改動,如果工作副本是分支的,則合併範圍是主線上的改動 1 主幹合併到分支 如果是需要將主線的改動合併到分支上,需要在分支的工作副本下進行合併,合併的...
SVN分支與合併
一些相關的概念和原理 分支 branch 和標記 tag 對於 svn 來說就只是副本 copy 沒有任何其它意義。分支和標記的意義是我們人為給予的。svn 的副本是通過 cheap copies 來實現的,建立乙個副本就類似 unix 中建立乙個硬鏈結 hard link 空間和時間的消耗都是固定...