two - 使用TortoiseSVN我如何將主幹上的更改合併到分支中,反之亦然?




tortoisesvn merge branch to trunk (4)

我一直在閱讀Subversion 1.5的分支/合併,使用Subversion的優秀免費版本控製書。 我認為我知道如何使用Subversion命令行客戶端來執行我最需要的操作,它們是:

使用Trunk更改更新分支

從分支的工作目錄運行:

svn合併http://svn.myurl.com/proj/trunk

將分支合併到主幹中

從主幹的工作目錄運行:

svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch

但是,我們使用TortoiseSVN 1.5作為Subversion的接口。 我想知道如何用TortoiseSVN執行這些操作。 新的對話框在主菜單上提供了三個不同的選項。

  1. 合併一系列修訂
  2. 重新整合分支
  3. 合併兩棵不同的樹

從我可以收集的內容來看,TortoiseSVN總是使用以下語法執行svn。

svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH

此外,重新集成分支常常失敗,並顯示一些消息,指出某些目標尚未合併,因此無法繼續,因此我必須使用選項#3。

我的問題是:

  1. 我如何使用TortoiseSVN 1.5將主幹上的更改合併到分支中?
  2. 如何使用TortoiseSVN 1.5將分支合併到主幹中,使用和不使用重新合併方法?
  3. 我應該為每個選項使用以上哪個選項,為什麼?

編輯

通過“空運行”測試,我發現命令行Subversion操作

svn合併http://svn.myurl.com/proj/trunk

類似於TortoiseSVN中的選項#1(合併修訂範圍),只要我將修訂範圍留空即可。


Shift-Right單擊該文件夾並選擇TortoiseSVN - > Merge All


您應該使用“合併一系列修訂”。

要將樹幹中的更改合併到分支,請在分支工作副本內選擇“合併修訂版本”並輸入中繼網址以及開始和結束脩訂以進行合併。

以相反的方式合併樹幹中的分支。

關於--reintegrate標誌,請查看這裡的手冊: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate ://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate


看看svnmerge.py 。 它是命令行,不能被TortoiseSVN調用,但它更強大。 從FAQ

傳統的顛覆會讓你合併更改,但它不會“記住”你已經合併的東西。 它也不提供一種方便的方式來排除變更集被合併。 svnmerge.py可以自動完成一些工作,並簡化它。 Svnmerge還創建了一條提交消息,其中包含所有合併事件的日誌消息。


行為取決於您的存儲庫的版本。 Subversion 1.5允許4種類型的合併:

  1. 合併sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. 合併sourceWCPATH1 @ N sourceWCPATH2 @ M [WCPATH]
  3. 合併[-c M [,N ...] | -r N:M ...]來源[@REV] [WCPATH]
  4. 合併 - 重新整合SOURCE [@REV] [WCPATH]

1.5之前的Subversion只允許前兩種格式。

從技術上講,你可以使用前兩種方法執行所有合併,但最後兩個啟用Subversion 1.5的合併跟踪。

TortoiseSVN的選項在版本庫為1.5+時將方法3或修訂版圖合併到方法3中,或者在資源庫較舊時將方法一合併到方法一中。

將功能合併到發布/維護分支時,應使用“合併修訂版本”命令。

只有當你想把一個分支的所有特徵合併回一個父分支(通常是主幹)時,你應該使用“重新分支分支”來進行研究。

最後一個命令 - 合併兩個不同的樹 - 只有當你想要超出正常的分支行為時才是有用的。 (比如比較不同的版本,然後將差異合併到另一個分支)





branch