2012-02-22 40 views
0

我在Eclipse中使用Subclipse 1.6x插件。讓我先解釋一下這個場景:Subclipse合併問題 - 空運不符合合併結果

假設我的項目主幹包含修訂版r1到r100。 在修訂版r100中,我創建了一個分支,並開始將r101提交給r105。 在這一點上,我想我會從中繼帶來的任何變化,以便我的分支更新。

但由於合併錯誤,我最終將r80從trunk中合併到我的分支,並將其作爲修訂版r106提交。因此,我在分支中恢復r106中的更改,並對此分支執行另一個提交r107。

在這段時間裏,在主幹中已經提交了r108和r 109。 現在,在r106中恢復我的錯誤提交後,我正確地將所有從trunk到r109的更改引入我的分支(通過合併),以便我的分支保持最新狀態,並將其作爲r110提交給我的分支。

一切都很好。現在我決定我不需要分支,所以讓我將分支(r110)中的所有更改合併回主幹。因此,在合併之後,我應該看到的是我在分支(在該分支中修訂版101和更高版本)中所做的更改,因爲我的分支與trunk保持同步。

我做一個團隊 - >合併與從URL作爲主幹和以URL作爲我的分支路徑。 From修訂版是最後一個合併版中的修訂版(r109),使用的修訂版是我分支機構(r110)中的最新修訂版。我嘗試了Dry Run,並在Merge窗口中創建了統一的差異文件選項。他們兩個看起來都是正確的,唯一更新的文件是我在分支中更改的文件。

現在我運行合併和和合並結果不同於幹運行。首先它正確合併Dry Run所顯示的文件(這正是我所期望的)。但它並不止於此。然後,它會嘗試這樣的事: ---通過R110合併R80(可能是因爲我的分支合併錯誤的???)

,然後做一些事情,如: ---反向合併通過R80 R110 。

最終結果是在我所做的所有更改中完全合併爲幹運行結果以及其他文件的更新/更改(由於我想第二次合併和反向合併)。

有關爲什麼會發生這種情況的任何想法以及如何使合併結果與幹運行結果正確/相同?即使統一差異文件創建是正確的。

感謝您閱讀冗長的文章。

回答

0

好吧我想通了或至少解決了我的情況。這個問題是因爲在我的分支上,我錯誤地將r80從trunk中合併到r106中。然後我做了Team> Revert> last commit來恢復這個merge-commit,並將其作爲新的提交r107進行檢查。

有2個問題與此。首先,這不是在SVN中恢復合併提交的最佳方式。 Google瞭解更多詳情。

第二個問題是,當您將這些更改(在多個提交中)合併回主幹時,SVN會嘗試將每個提交逐一應用到主幹。當我通過合併r80搞亂了r106的分支時,由於文件的祖先相互衝突,SVN對這種變化感到困惑。爲了避免這種情況,並且告訴SVN不要擔心祖先,而只是將分支中的差異/變化合併到主幹,請在合併窗口中選中「忽略祖先」選項。這爲我解決了這個問題。

另外,作爲附註,在SVN合併中,Dry Run的結果等同於在文件之間運行Diff。但是當你進行合併時,它會查看文件的祖先,並逐個提交進行合併。因此,結果可能並不總是相同的。 SVN文檔中有更多的細節。

這是我從我的經驗中瞭解到的,並在此處發佈此答案,因爲我沒有對我的帖子收到任何其他回覆。如果我不完全正確,請添加任何評論。

1

從Subversion 1.5開始合併跟蹤之前,Subclipse合併對話尚未開始。我建議您安裝Subclipse更新站點上包含的CollabNet合併客戶端插件,並查看是否獲得相同的結果。

如果安裝了該客戶端,Team> Merge選項應該會顯示一個嚮導。

+0

感謝您的評論,但沒有幫助。另外我發現subclipse比CollabNet更友好。因人而異 – kriver 2012-02-29 19:55:06