1. 程式人生 > >SVN分支建立 與 分支和主幹的程式碼合併問題

SVN分支建立 與 分支和主幹的程式碼合併問題

最近專案中涉及到了SVN的建立分支,以及分支和主幹程式碼的合併。在此記錄一下主要的東西(恩,感覺這位博主的截圖好暖心,就忍不住轉一下了)~

一、建立分支的意義:

在日常專案開發及版本迭代的過程中,經常會遇到這樣的場景:當前版本提交QA測試之後,一方面需要在主幹上開發下一版本的新需求;另一方面還需要在新的分支上解決QA提的Bug。專案上線之後,需要將分支上的改動合併到主幹上。這就需要需要我們熟練掌握分支開發及合併。

二、建立新分支的步驟

  1. 建立測試專案並使其和SVN進行關聯: 首先我們在Android Studio中新建一個測試專案SVNTestDemo,然後使其和SVN進行關聯(從SVN更新下來的專案可忽略此步,不熟悉此步驟的朋友們請請轉至 上一篇)。

  2. 提交本地新增或改變的檔案:建立新分支前,最好先將本地修改的檔案提交至 SVN。SVN 每一次提交操作時,都會有一個對應的 Revision。這裡我們需要記住建立分支前最後一次提交修改檔案時,該操作對應的 Revision(非常重要),以供後續合併分支時使用。

  3. 建立新分支:將專案切換至Project目錄,選中專案後點擊右鍵,依次選擇Subversion->Branch or Tag 如下圖所示:
    在這裡插入圖片描述
    之後會彈出如下彈框:
    在這裡插入圖片描述
    可根據需要選擇拷貝源、新分支目錄、修改分支專案檔名等。然後填寫Comment,點選OK。分支建立成功後,在SVN倉庫branches目錄對應的檔案下,右鍵選擇 SVN Update 拉取分支程式碼。如下圖所示:
    在這裡插入圖片描述


    雙擊開啟 branches 資料夾,然後右鍵選擇 SVN Update 拉取分支程式碼:
    在這裡插入圖片描述
    拉取成功後,branches檔案目錄下會出現一個新的資料夾new_branch。至此,新分支建立徹底完成。

三、對主幹和分支進行相互合併:

為方便測試,我們首先分別對分支和主幹的檔案進行修改並提交(僅供測試使用,實際專案中只有主幹和分支檔案或程式碼不相同時才需要合併)。合併之前需要先更新一下程式碼,保證目標分支本地的程式碼是最新的,避免不必要的衝突。

1. 將分支的改動合併到主幹:
在Android Studio中開啟主幹專案,切換至Project目錄,選中專案並點選右鍵,依次選擇Subversion-> Integrate Directory 如下圖所示:
在這裡插入圖片描述


之後會彈出如下彈框:
在這裡插入圖片描述
注意(此處有坑!!!):從上圖可以看出合併時,Revision預設選中的都是HEAD(即:最新版),此時若點選OK,主幹新建立的類會被刪除,主幹和分支同時修改的類會被分支覆蓋,主幹中的檔案及其內容將變成和分支一模一樣;

顯然大多時候這並不是我們想要的,我們需要保留主幹的新增檔案,同時合併分支的改動。這時主幹(即:Source 1)的 Revision就不應該是最新版 HEAD,而是之前我們所說的 建立分支前最後一次提交修改時,該操作所對應的 Revision

獲取該Revision的方式:選中Source 1右側的Revision為Specified,然後點選其右側的 … 按鈕,彈出如下彈框:
在這裡插入圖片描述
從圖中我們可以看到之前的提交記錄,我們選中Revision 4,然後點選 OK 即可。

通過上面方式,修改分支合併時的配置頁如下:
在這裡插入圖片描述
點選OK,解決合併時的衝突。執行無異常後,提交合並後的檔案至SVN即可。

2. 將主幹的改動合併到分支:
首先在Android Studio中開啟分支專案,從SVN更新程式碼,保證分支對應的原生代碼是最新的。
從主幹合併至分支時的其他過程與上述合併過程基本一致,只需將合併配置頁的Source 1和Source 2對應的分支路徑進行調換,Source 1(即:分支路徑)對應的Revision選擇建立該分支時,該操作所對應的Revision即可。
在這裡插入圖片描述
點選OK,解決合併時的衝突。執行無異常後,提交合並後的檔案至SVN即可。

(注意,將分支合併到主幹上後,svn show log日誌上是沒有日誌記錄的,只有再次點選提交主幹程式碼後,才會有日誌記錄哈~)