2011-11-18 120 views
3

如果你有一個包含svn:external鏈接的目錄(我們在工作中廣泛使用它),那麼無論何時在分支之間合併該目錄,目錄中的每個文件都會得到一個新的svn:merge-info屬性。svn與svn合併:外部原因大量添加svn:merge-info屬性 - 任何解決方案?

我猜這是因爲外部鏈接沒有被合併更改,所以svn正在計算它自己的子樹(與Why would svn merge of a branch with no changes causes untouched files to modify svn:mergeinfo property相關,但不是相同的問題)。

這會導致實際更改被隱藏在所有合併信息屬性更改中,導致更改集很大且幾乎不可讀。 (我們有一個具有足夠合併歷史和外部合併的分支,合併單行變化可以導致500Kb的差異)。

到目前爲止,我們唯一能做的就是在提交前用svn:external links從子樹中刪除合併屬性。這可以防止使用--reintegrate並意味着我們無法跟蹤真正的子樹合併,如果它們發生。

有沒有人有更好的解決方案?

+1

你使用的是什麼版本的顛覆? –

+0

正在使用1.6.15。 V1.7解決了這個問題。 – Malcolm

+0

我想通了。我有同樣的問題,這真的很煩人。 –

回答

3

svn:合併信息不是要讀取,但我理解你的問題。

一個解決方案可能是升級到1.7(服務器和客戶端)。合併信息有一些工作可以幫助你。

這聽起來像你已經理解合併信息,但這裏有一些額外的信息。

一個節點(文件或目錄)上的合併信息從它的父(指揮)中繼承,一路通過您的工作副本,然後進一步到存儲庫。 svn會嘗試僅在需要的節點上寫入合併信息即與其父代不同的地方。

爲了防止合併,信息上的節點確保合併儘可能靠近版本庫的根,如果任何其他合併已發生之前嘗試在這些從上一級目錄合併。這將不會導致更改,但可以填補合併信息中的空白,使Mergeinfo Elision更有效。

我發現某些版本的svn在執行合併時不能按預期工作。 1.6.6(Ubuntu 10.04版本)在部分合並時不能很好地工作。

+1

升級到svn 1.7客戶端解決了這個問題。它不需要服務器升級。 – Malcolm