2009-06-17 109 views
51

我有什麼,我認爲是一個簡單的方案 - 使用TortoiseSVN:SVN - 無法合併分支回主幹 - 許多樹衝突

1)我做了一個應用程序的一個分支(B2)(上下工夫實現圖像精靈& JAWR)。

2)測試&開發在主幹上正常進行。

3)我重新基於分支幾次在過去數天:

3.1)合併幹線(由修訂版本的範圍),以我的分支B2工作拷貝,在合併過程中解決衝突。

3.2)(在測試分支-b2之後),我提交了基於分支的分支-b2。

這一切都按我的預期工作。但將分支合併回主幹與我有關:

4)在分支-b2中提交的所有更新;我確定我在trunk和branch-b2上執行SVN更新。

5)然後,我嘗試從分支-b2合併(修訂範圍)到主幹。但是,對於已添加到主幹中的任何新文件,隨後在重新分支時將其添加到分支b2中,我會發生樹狀衝突。我不確定解決這些衝突的正確方法。

我見過的最典型的建議是從樹幹中刪除樹衝突文件,然後合併分支;或刪除整個中繼,將分支文件複製過來,然後將它們作爲新版本提交到中繼。這兩種選擇似乎都不是一個好主意 - 首先是一種痛苦,而且兩者似乎都會丟失文件修訂歷史。

我做錯了什麼,我該如何解決?

回答

71

聽起來就像您使用1.5版之前的合併樣式並試圖將分支重新整合到主幹中。在這種情況下,你想要做的是首先確保所有樹幹更改已合併到分支中,然後代替範圍合併分支到指向樹幹的工作副本,則要合併「FROM trunk @HEAD TO分支@ HEAD「,工作副本指向主幹。實質上:

「給我所有的變化,我需要使樹幹與分支相同」。

如果您已將所有樹幹更改合併到分支中,則該方法有效,因爲樹幹和分支之間的唯一區別在於分支中所做的更改。

有意義嗎? :)

+0

這很有道理 - 將在a.m.中首次出現。出於好奇和對未來健康的渴望,什麼是1.5後合併風格? – 2009-06-17 20:46:40

+2

1.5及以後,您可以跳過第一次合併中的版本範圍,並使用「svn merge --reintegrate branch」作爲第二次合併(無法回想TSVN gui特性)。不利的一面是,在重新集成之後,你必須重新分支,因爲重新合併對mergeinfo有一些有趣的地方。 – Rytmis 2009-06-18 04:34:22

+52

謝謝@Rytmis,我只是設法解決這個問題,但我想爲烏龜用戶提供翻譯。 1)將您的工作副本切換到分支(如果它尚未) 2)右鍵單擊工作副本TortoiseSVN>合併>「合併一系列修訂」,單擊下一步 3)從= Trunk合併的URL ,點擊下一步,合併 4)將工作副本切換到主幹 5)右鍵單擊工作副本TortoiseSVN>合併>「合併兩棵不同的樹」,單擊下一步 6)From:Trunk(使用HEAD修訂版) To:Branch (使用HEAD修訂版) 7)單擊下一步,合併。8)提交您的工作副本。 完成 – mikesigs 2010-08-19 21:50:55

3

我調查了同樣的問題。 這是Tortoise SVN 1.6.5中的「特性」。 TortoiseSVN 1.5在我們的資料庫(SVN 1.5)下正常工作。 TortoiseSVN 1.6.5當重新綁定將主線文件添加爲NEW(不保存合併歷史記錄)時。
並重新分支分支處理這些文件與主線衝突。

我通過使用TortoiseSVN 1.6「重新集成分支」的功能解決了這個問題。它專門用於功能分支。

- 阿列克謝·科爾鬆

1

我無法真正弄清楚上述方案是如何工作的,所以我的解決辦法是不同的。首先,我確保分支包含來自主幹的所有更改。

1)我得到了一個新的幹線副本。 2)我使用龜svn導出將分支導出到臨時位置。 3)我用Windows資源管理器將整個分支樹複製到樹幹並覆蓋所有文件4)我使用了對龜的更改命令進行檢查,幷包含所有未經檢查的文件複選框。 5)我選擇了所有文件並單擊添加。

您應該使用尚未構建的解決方案,以便未經檢測的文件不包含輸出。

我不能等到我們升級到1.5以上

1

選擇修改,同時選擇「合併範圍rivisions的」使用TortoiseSVN選項合併。這將防止每次合併操作再次出現相同文件的樹衝突。

1

這裏有一些更多的信息有助於@Rytmis答案,這有助於我保持直線。

使得後備箱完全像一個分支或標記的高級別步驟:從樹幹

  1. 結帳。
  2. 使用trunk的工作副本,從trunk中合併到branch/tag。
  3. 提交。

實施例 '的svn' 命令行命令:

svn checkout <trunk url> 
cd trunk 
svn merge <trunk url> <branch/tag url> 
svn commit -m "<message>" 
0

我認爲解決了這個問題。 1.右鍵單擊您合併的「分支」。 2.點擊Tortoise SVN >>合併 3.「合併一系列修訂」和下一個 4. !!!檢查「反向合併」! ,URL從「分支」合併,特定範圍「最近合併修訂」,而下一步 5.接下來 6. SVN Commite

之後,我可以從分支合併到主幹。