2009-02-26 43 views
5

我是SVN的新手。上了一天左右的一個分支工作後,我試圖合併從主幹分支的變化:SVN標記整個文件爲衝突

svn merge svn://server/trunk 

的問題是,每當SVN遇到衝突的文件,它不能夠通過線路的變化來識別線並將整條線標記爲衝突。我嘗試了幾個其他的SVN客戶端,並試圖切換終端和空白選項,沒有任何進展。我究竟做錯了什麼?我認爲這是最簡單的合併案例,所以我希望這可以與最默認的Subversion設置,任何客戶端以及任何SVN版本一起使用。這是一些已知的初學者的捕獲?

客戶:1.5.5(SlikSvn:tag/[email protected])WIN32

服務器:1.4.6(r28521),視窗

編輯

基礎上的建議在下面的評論和回答中,我做了更多的調查:

  1. 有問題的文件是UTF8。

  2. 它們沒有任何SVN屬性。

  3. 「svn diff」命令正確地識別了差異。

+0

Windows? Linux呢?烏龜? – 2009-02-26 20:05:25

+0

謝謝你指點我。我編輯了這篇文章。 – 2009-02-26 20:11:37

+0

它是什麼類型的文件?它有任何svn:道具集?如果您將分支版本與中繼版本進行比較,那麼svn diff會顯示什麼內容? – 2009-02-26 20:29:51

回答

5

最近我們遇到了這個問題,發現這是使用1.4.x服務器和1.5.x客戶端的問題。 Subversion 1.5引入了更多的智能合併,但您需要服務器和客戶端運行1.5才能利用此優勢。

我們發現指定我們想要合併的版本號的範圍給出了預期的結果。

0

您是否嘗試過使用TortoiseSVN?它與ToroiseMerge捆綁在一起,我發現它也是一個體面的合併。

0

我沒有使用過SVN,我只通過eclipse插件使用它,但可能會出現一些場景,您只需告訴它使用哪種情況(本地文件與遠程文件)。合併一組不相交的傳出和傳入更改通常不是問題,但是如果某行與某些類型的更改衝突(在eclipse中它將整行/塊標記爲紅色),您可能需要接受其中一個或另一個它可能不會自行進一步合併。

0

檢查文件的svn:mime-type屬性。如果有這樣一個屬性集,它的值不是以'text /'開始的,那麼Subversion將這些文件視爲二進制文件而不是文本。

如果你的文件是用utf-16編碼的,Subversion默認將這些文件視爲二進制文件。

2

我已經選擇了Mark的回答。這只是總結和提供更多細節。我的問題是由於我們使用的SVN 1.4不支持更高級的1.5合併功能而造成的。正如所選擇的答覆中指出,我發現我不得不使用SVN的格式如下合併命令(在情況下,我想從主幹的修改傳播到我的分支):

​​

我想,我的困惑是這是由於SVN書籍和我使用的客戶端在默認情況下假設我已經運行了1.5版本,並且示例和默認合併方法使用了新功能。公平的說,SVN書籍中的基本合併部分介紹了它(我只在解決問題時才注意到)。