two - 使用TortoiseSVN我如何將主幹上的更改合併到分支中,反之亦然?
tortoisesvn merge branch to trunk (4)
我一直在閱讀Subversion 1.5的分支/合併,使用Subversion的優秀免費版本控製書。 我認為我知道如何使用Subversion命令行客戶端來執行我最需要的操作,它們是:
使用Trunk更改更新分支
從分支的工作目錄運行:
將分支合併到主幹中
從主幹的工作目錄運行:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
但是,我們使用TortoiseSVN 1.5作為Subversion的接口。 我想知道如何用TortoiseSVN執行這些操作。 新的對話框在主菜單上提供了三個不同的選項。
- 合併一系列修訂
- 重新整合分支
- 合併兩棵不同的樹
從我可以收集的內容來看,TortoiseSVN總是使用以下語法執行svn。
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
此外,重新集成分支常常失敗,並顯示一些消息,指出某些目標尚未合併,因此無法繼續,因此我必須使用選項#3。
我的問題是:
- 我如何使用TortoiseSVN 1.5將主幹上的更改合併到分支中?
- 如何使用TortoiseSVN 1.5將分支合併到主幹中,使用和不使用重新合併方法?
- 我應該為每個選項使用以上哪個選項,為什麼?
編輯
通過“空運行”測試,我發現命令行Subversion操作
類似於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種類型的合併:
- 合併sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
- 合併sourceWCPATH1 @ N sourceWCPATH2 @ M [WCPATH]
- 合併[-c M [,N ...] | -r N:M ...]來源[@REV] [WCPATH]
- 合併 - 重新整合SOURCE [@REV] [WCPATH]
1.5之前的Subversion只允許前兩種格式。
從技術上講,你可以使用前兩種方法執行所有合併,但最後兩個啟用Subversion 1.5的合併跟踪。
TortoiseSVN的選項在版本庫為1.5+時將方法3或修訂版圖合併到方法3中,或者在資源庫較舊時將方法一合併到方法一中。
將功能合併到發布/維護分支時,應使用“合併修訂版本”命令。
只有當你想把一個分支的所有特徵合併回一個父分支(通常是主幹)時,你應該使用“重新分支分支”來進行研究。
最後一個命令 - 合併兩個不同的樹 - 只有當你想要超出正常的分支行為時才是有用的。 (比如比較不同的版本,然後將差異合併到另一個分支)