2011-08-04 84 views
1

這是我的問題:我在一個項目下創建了三個單獨的回購站。回購是「分支」和「主幹」和「標籤」。SVN更改版本庫的位置

所以我知道我需要刪除它們並擁有一個存儲庫。我需要把所有東西都放到項目中。所以我試圖遠程做到這一點。首先我檢查了項目,然後刪除了「分支」和「標籤」,這兩個都是空的。

我做了一個svn刪除,然後提交。接下來我想擺脫後備箱,但它已經保存了文件。所以我所做的是我複製這些文件到目錄上面:

cp -r trunk/* . 

現在我刪除後車廂:

svn delete trunk/ 

好了,現在該項目是空後,我做了承諾。但是我仍然擁有那些從主幹中複製出來的重要文件。我想把它們放在遠程服務器上的項目下,所以我只有一個存放這些文件的存儲庫。但是這些本地文件仍然認爲它們屬於被刪除的主幹存儲庫。於是我發出這個命令,我希望它能修復它們:

svn switch --relocate \ 
svn+ssh://[email protected]/home/fkim/svn/aetv/trunk \ 
svn+ssh://[email protected]/home/fkim/svn/aetv 

但是這並沒有改變這些文件的任何內容。當我做svn身份時,我看到他們有'?'在他們旁邊,如果我嘗試添加它們,我被告知他們已經受版本控制。我該怎麼辦?我需要將它們都放在遠程服務器上的項目下。

請注意,我正在Linux上運行所有的東西。這是我在命令行上做的工作。

回答

2

relocate用於將工作副本指向另一個URL,該URL還包含此工作副本的回購(即,當SVN服務器發生更改並且您不想刪除工作副本並再次檢出時) 。

您似乎想要將新文件重新導入空回購。除了您的新文件仍被標記爲工作副本的一部分。

首先檢查空箱子目錄。這將創建一個空的工作副本。將舊的工作副本複製到新的工作副本,但刪除所有.svn目錄。這可以使用export命令完成。添加所有文件並提交將其導入回購。

+0

這不是一個很好的解決方案,因爲我們將放棄這些文件的所有歷史記錄 – Rost

+0

我同意,但我的印象是這是OP想要的。如果他想從一個回購移植到另一個回購,他需要導出源回購並導入目標回購。但那不是他所做的。 –

+0

這對我來說似乎是最好的解決方案,因爲這些文件沒有歷史記錄。我剛剛添加了它們,因此將它們添加到空的回購庫中正是我想要的。謝謝。 – sqlman

0

在你的本地工作文件夾上,使用TortoiseSVN選擇「導出」來修剪所有svn的東西。然後提交你的本地文件夾到另一個倉庫。這能解決你的問題嗎?

1

手動修改文件夾結構(在SVN控制下)非常危險。

現在你要做的下一步驟:

  1. Checkout的電流再次(項目不要複製裏面的東西!)

    svn co http://your/project/svn/ 
    
  2. 還原軀幹:

    svn merge -rHEAD:PREV . 
    svn ci -m "Trunk restored" 
    
  3. 移動軀幹內容:

    svn mv trunk/* . 
    svn ci -m "Trunk contents moved up" 
    
  4. 刪除主幹:

    svn del trunk 
    svn ci -m "Trunk deleted"