2013-04-13 176 views
3

我是新來SVN和需要做的從主幹合併,我們從工作的一個分支了很多。 這是SVN commmands我採取合併SVN合併,並自動解決衝突

svn up 
svn mergeinfo --show-revs eligible branch trunk (branch and trunk are actually svn urls) 

序列我從分支和最新的樹幹修訂版符合條件的修訂版的最低版本,然後做一個SVN合併。

svn merge -r lowest_eligible:latest_trunk trunk_url . 

在合併過程中有幾個衝突。但是,它們與我們在分支中所做的任何更改都沒有關係,所以我有點困惑它們爲什麼會發生衝突。有任何想法嗎?反正,我總是隻選擇,他們全來解決它

最後,我需要做的svn決心犯

svn resolve --accept working -R . 

之前,我有兩個問題。 這是命令,從樹幹執行合併分支的最佳順序?

合併往往需要一段時間,所以我想只要把它合併,讓SVN自動解決衝突,以他們滿。有沒有辦法做到這一點?

+0

我的理解是否正確:lowest_eligible是分支歷史記錄的修訂,而latest_trunk是來自trunk歷史記錄的修訂版本? – maxim1000

回答

3
  1. 如果從樹幹合併分支(分支的WC)的合併信息參數順序不正確(反向):縮短正確形式必須是svn mergeinfo --show-revs eligible trunk(第一個參數是合併,第二個來源 - TARGET /默認爲「。」/,即你的WC)
  2. 如果你使用Subversion,它已經支持mergeinfo,你可以跳過檢測「必須合併」版本的範圍 - Subversion在合併時自動執行它
  3. 如果你想在衝突的情況下,總是喜歡從主幹的修改,您可以將其添加到合併命令

至於最後的結果,你的週期性同步合併過程將是一個命令裏面WC分支

svn merge <URL-OF-TRUNK> --accept "theirs-conflict"

2

通常的,合併應該是簡單得多 - 特別是如果你只從主幹合併到分支。在這種情況下,只需確保

A)您在分支工作副本中沒有未提交的更改,並且B)您擁有該分支的當前版本(您已通過執行'svn up 「)

如果你準備好進行合併,只是在你的分支工作拷貝執行

svn merge ^/trunk 

至於衝突: 有時SVN搞砸那裏有沒有合併diff和報告衝突。一個好的三路合併工具,如kdiff3可以幫助奇蹟。除此之外,我建議不要使用自動衝突解決方案,因爲通過避免解決問題,大多數衝突不會變得更容易解決。使用上述過程,您至少應該能夠避免所有不必要的衝突。