2013-02-07 120 views
1

我被分配到合併幾個分支回Subversion的樹幹。目前,項目設置如下所示。擦除Subversion分支

trunk 
branches 
    BranchA 
    BranchB 
    BranchC 
tags 
    // A bunch of tags (1 per release) 

的目標是整合BranchABranchB到主幹,然後讓他們「潛伏」不知何故。

我想我知道如何去做實際的合併。在Windows資源管理器中右鍵單擊中繼線,然後TortoiseSVN > Merge...,然後Reintegrate a branch,選擇分支,然後合併。

問題1 - 這是使用的正確方法嗎?

我也不確定在執行此操作後存儲庫的外觀。我們希望確保沒有未來的開發者錯誤地在舊的分支上工作。

問題2分支合併後不能使用,還是需要做別的事情?你能「刪除」一個分支嗎?如果是這樣,分行歷史會發生什麼?或者,我們是否需要做一些像鎖一樣分支的操作​​?

感謝您的任何幫助。

回答

2

問題1 - 這是使用的正確方法嗎?

是的,這將合併分支的內容到您的工作目錄。直到您提交(新合併的)中繼線之後,存儲庫中才會發生任何事情。一旦你提交了,不僅樹幹變化會在回購中,而且還會記住從分支中合併的東西。

問題2 - 分支合併後不可行,還是我們 需要做別的事情?

此時您可以刪除分支,也可以不斷更改分支。如果您不斷修改分支並稍後進行另一次合併,則只有新的東西(而不是先前合併的東西)將合併到主幹中。

如果您確實要刪除分支,我發現的最簡單的方法是打開repo瀏覽器,右鍵單擊分支並選擇「刪除」。分支將從最新版本中消失。它仍然會出現在回購歷史記錄中,如有必要,您可以將其還回,但有人在進行新的結賬時不會看到它。

+0

如果刪除分支,您將如何查看/獲取歷史記錄? –

+0

啊。當你打開回購瀏覽器時,你只需要改回到仍然有分支的版本。我想知道是否有辦法看到所有存在的分支? –

+0

+1感謝您的幫助。 –

1

從命令行(回答問題1):

 
$ cd $DEVROOT/trunk 

$ svn merge http://company.org/svn/proj/branches/BranchA 
.... 
$ svn ci -m 'Merged BranchA' 
$ cd rm -m 'BranchB already merged' http://company.org/svn/proj/branches/BranchA 

$ svn merge http://company.org/svn/proj/branches/BranchB 
.... 
$ svn ci -m 'Merged BranchB' 
$ cd rm -m 'BranchB already merged' http://company.org/svn/proj/branches/BranchB 

合併主幹分支和合並回合併到主幹是不是SVN的有效使用。爲什麼 - 閱讀:

我不能回答你的問題2因爲不知道你的真實要求 ...我建議閱讀官方指南:

並建議使用功能功能開發葉和分支機構長期版本支持和標籤對於版本。

而且不建議刪除任何分支。爲什麼?因爲除去SVN並不能使庫小......只有讓SVN LS輸出短...

看看我的指南:


  • 每個主要版本都有自己的分支。
  • 另一個分支留給發展。
  • 最新的主要分支分支活躍。所有老的主要分支都是被動的。
  • 被動主要分支機構僅用於只有用於修復最新 來自此主要版本系列的代碼(無新功能)。
  • 在開發分支中開發的功能。發佈之前合併爲主動發佈分支 。
  • 修復了最早的主要版本分支中的錯誤,必須爲其提供 併合併到所有下一個主要版本分支和開發分支。
  • 發佈意味着分支機構和移動 產品構建釋放系統完成開發的功能和bug修復..
  • 經過測試和穩定釋放做。這意味着:

    • VERSION文件已更新。
    • CHANGE文件填充了功能集,版本,數據和VCS修訂號 的編號。
    • 通過VCS中的標記釋放標記。
    • 調用由標記標記的源的構建。將結果複製到發佈服務器。
  • 如果錯誤在某些版本的發現,它固定在開發分支,並與新的次/修復產品版本發佈 。

  • 以前的主要/次要版本不支持(只使用最新版本)。 用戶總是被迫更新到最新版本。

這裏牛逼 - 標籤,b - 分支:

 

    +--+-----+----------------------+-----+----+------+------+-----> 
    dev|  |   ^ ^ |  | |  |  | 
    |  |   |  | |  | v  v  v 
    |  |   |  | |  | +--+------+------+--> 
    |  |   |  | |  | b2 |  |  | 
    |  |   |  | |  |  v  v  v 
    |  |   |  | |  |  t2.0.0 t2.0.1 t2.1.0 
    v  v   |  | v  v 
    t0.1.0 +---+------+-+---+-+-----+------+------+------+------+---> 
      b1 |  |  |  |  |  |  |  | 
       v  v  v  v  v  v  v  v 
       t1.0.0 t1.0.1 t1.0.2 t1.1.0 t1.2.0 t1.2.1 t1.2.2 t1.2.3 

在這個例子中,我們釋放標籤1.0.11.0.2與bug修復分支 ,因爲開發分支尚未準備好投入生產。

+0

如果你想刪除舊分支爲什麼不尋找Git/Mercurial集成到SVN? – gavenkoa