2011-09-30 210 views
3

我有多個svn倉庫,我試圖結合到一個。結合SVN倉庫

我做了幾個svnadmin dump {old-repo} | svnadmin load --parent-dir {new-subfolder} {new-repo}奔跑他們都結合起來。但是有沒有辦法將工作副本指向新版本?

如果我做一個svn switch --relocate {old-repo} {new-repo}我得到得到錯誤:

svn: The repository at '{new-repo}' has uuid '70567957-ca9a-40a3-95c2-c7c7f5304040', but the WC has 'e7f76c56-4d0d-472c-a1f0-6eac23a5d238'

我不認爲這是很容易的新的乾淨的檢出。因爲大部分WC都有一些本地更改(如DB憑據/用戶映像)。還有一個甚至有一個(必需的)緩存目錄與數百萬的圖像縮略圖,這需要+/- 2天才能重新生成。

可我強迫svn的忽略UUID,並且只接受新的位置?

回答

0

你可以創建你當前的工作副本的補丁文件,然後再結帳,最後應用補丁。

創建補丁文件:

$> svn diff > ~/old_repo.patch 

結帳:

$> svn co {new_repo} 

應用補丁:

$> cd new_repo 
$> patch -p0 -i ~/old_repo.patch 
+0

這確實我手動做同樣的事情,但還是無法將WC搬遷到新的回購 –

+0

那好吧對不起,我沒有問題。我會更新我的答案,以你想要的。 – qwertzguy

+0

這不起作用,因爲緩存位於'svn:ignore *'文件夾中。所以它不會被包含在補丁中。即使他們在普通文件夾中,仍然可以工作,因爲它們是二進制文件。對? –

2

有一個新的堆棧交換網站回答題目(Unix的&的Linux) svn switch --relocate: wrong uuid?,它解釋瞭如何設置新存儲庫的UUID。這會帶來以下後果:

  • 您可能只設置1個UUID,但你有n個老倉庫。你必須決定使用哪一個,對於這個,UUID的改變可能會起作用。
  • 其他所有將需要一個新的結帳。

對不起,沒有完整的解決方案,它似乎。