2012-05-02 50 views
3

我有一個svn存儲庫,指定了EOL,並且各種項目正在通過svnrdump轉儲和svnadmin加載到新存儲庫。爲了討論的目的,基本拓撲結構是:將SVN工作區指向具有不同父目錄的不同服務器和存儲庫

old repo: http://oldrepo/repositories/oldname/... 
new repo: http://newrepo/repositories/newname/... 

這種特殊的倉庫很大,我有一個開發者希望自己的老工作空間指向新的存儲庫。我看到的問題是TortoiseSVN允許重新定位事件,並且通過輸入URL http://newrepo/repositories/newname,初始重定位似乎成功。但是,工作區現在認爲在新的回購目錄結構是這樣的:

http://newrepo/repositories/newname/oldname 

有沒有一種方法,以消除工作區的參考OLDNAME?由於額外的非目標目錄,SVN更新失敗。我能想到的唯一選擇是讓該開發人員從新存儲庫中檢出全部所需的工作空間,並讓他將他的WIP文件複製到新的工作空間中。客戶端是否有其他選擇或解決方案?

編輯:工作目錄是c:\ SVN \ FolderA。執行命令:svn relocate http://newrepo/repositories/newname/Folder1/FolderA返回以下錯誤:

svn: E155024: Invalid relocation destination: 'http://newrepo/repositories/newname/Folder1/FolderA' (does not point to target) 

我不知道有關這是怎樣的,但原來的倉庫位置oldrepo是一個文件夾,但在新的存儲庫,newrepo(即:http://newrepo/repositories/newname)是新存儲庫的根級別。另外,我應該指出,在遷移過程中,變更被保留,但個別版本號不是。

+0

您的開發人員可能不得不將其項目與舊工作區斷開連接,刪除其項目並將其項目從新工作區導出。 –

+0

我指示他這樣做。我的感覺是,由於目錄結構已從舊版本更改爲新版本庫,因此將舊的工作區指向新版本庫沒有乾淨的方法。 – OrionRogue

+0

@GilbertLeBlanc,如果你想把你的評論作爲一個正式的答案,這就是我所接受的。 – OrionRogue

回答

1

您的開發人員可能要:

  • 斷開他從舊的工作區
  • 項目保存自己提交的修改(如果有的話)其他地方
  • 刪除他的項目
  • 出口他從項目新工作區
  • 將其未提交的更改(如果有)重新應用於項目
4

我的工作副本有同樣的問題。如果存儲庫UUID被複制到新的倉庫(使用「svnlook uuid」和「svnadmin setuuid」命令),但是當我將我的工作副本升級到1.8時,嘗試嘗試這種「無效的重定位目標」錯誤將我的工作副本重新定位到新的回購。

我建議你只要刪除工作文件夾根目錄下隱藏的.svn文件夾,然後使用新的URL重新執行結帳操作即可。 SVN將只爲新版本庫再次「更新」這些文件,但只要您進行了全新的結算,它就會花費很長時間。如果您有任何已修改的文件,請在重新簽出到相同的文件夾之前先創建一個修補程序文件,以防checkout命令覆蓋已修改的文件。

記住有兩個路徑之間的差異:

http://newrepo/repositories/newname 
http://newrepo/repositories/newname/ <-- notice the final slash 

第一條路徑說的「NEWNAME目錄複製到目標文件夾」裏的第二條路徑寫着「複製NEWNAME目錄的內容到目標文件夾「。

希望這會有所幫助。

相關問題