2009-09-03 42 views
2

我使用Eclipse和Subversion訴3.4.2(用svn 1.4.6在服務器上),我理解特定的選項(深度有問題,忽略祖先等)以及如何將變化從樹幹合併到分支中,然後再返回。顛覆和Eclipse - 分支,並與行李箱合併

此外,當衝突的更改都存在,顛覆似乎打破 - 在衝突的文件比較編輯器,我的本地文件包含SVN文本(例如< < < < < < <。工作),這顯然不出現在實際的工作副本文件中。如果我回到我的資源視圖,我會看到一大堆SVN臨時文件。這是一個錯誤,或者我做錯了什麼?

回答

3

的「斷裂」爲你描述它是顛覆工作的標準方式 - 當行衝突合併結果,SVN保持了衝突雙方,並把它們在源文件中供您查看。你必須編輯您衝突的文件,檢查您的衝突與存儲庫的版本的版本,並對其進行編輯,這樣只有一組遺體(刪除< < < <線,該線>>>>的=====行和所有你不想要的衝突代碼行)。之後,右鍵單擊源文件並選擇「標記爲已合併」。之後你可以提交你的合併文件。這稱爲手動合併,您必須在發生衝突時完成此操作。

一堆臨時文件是來自任何一方的原始源文件,他們應該幫助您解決衝突 - 您應該有一個以「.mine」結尾的文件,它是您原始的乾淨版本的源文件和以「.rXXXXX」結尾的文件(其中XXXX是Subversion修訂版號),它是存儲庫的源文件的原始清除版本。當你「標記爲合併」這些文件將會消失。

Eclipse有一個漂亮的圖形工具,你可以用它來解決使用比較樣式編輯器的衝突,但它有一些怪癖,它需要的工具的一些實踐和了解,以便有效地使用它。如果您想嘗試,可以在文件的RMB菜單 - >團隊 - >編輯衝突下找到它。

+0

另外請注意,Subversive在合併對話框中有一個錯誤 - 通常只需要合併自上次複製(分支)以來的修訂,而當你在合併對話框中選擇「停止複製」時,由於錯誤Subversive會嘗試合併所有修訂版本。要解決它,請嘗試選擇具體的修訂選項,點擊「選擇」以顯示歷史記錄對話框,然後取消並返回到「停止複製」 - 應該做的伎倆。 – Guss 2009-09-03 22:29:51

+0

是的,我意識到Subversion如何與.rXXX和.mine協同工作,但是Eclipse通過將這些文件實際保存到我的工作副本中來「破壞」它。儘管我在「合併」對話框中選擇了實際的修訂版,但我感到更加接近,所以感謝您指出了這一點! – mbelos 2009-09-03 22:47:00

+0

僅供參考,我需要在「合併」對話框中選擇「2 URL」選項卡。選擇頭修訂工作正常... – mbelos 2009-09-03 22:55:37

0

我想你可能會發現那些行如<<<<< .working出現在您的實際工作副本文件中。這就是Subversion如何讓你知道文本的哪些部分需要手動編輯,因爲合併衝突。

您可以在優秀Version Control with Subversion本書的Resolve Conflicts部分閱讀更多關於合併的工作流程。

+0

當然,Eclipse很聰明,可以在比較編輯器中正確地打開它 - 我有初級開發人員,如果他們看到的話會驚慌! – mbelos 2009-09-03 22:28:32

+0

我無法評論Eclipse的智能(我使用vim)。 – 2009-09-03 22:45:16

+0

好的 - 是的,這是Eclipse的插件,開始引起一些頭痛,但我認爲我有一個解決方案發生。謝謝! – mbelos 2009-09-03 22:50:08