2008-12-06 54 views
41

我正在開發一個沒有trunk/branches/tags目錄結構的項目 - 即。一切都在svn回購的根源中。SVN在現有存儲庫上創建主幹目錄

我想創建一箇中繼目錄,並在根目錄中,並將根目錄中的所有內容移動到新的中繼目錄中。

這樣做的最好方法是什麼?

我考慮的第一件事是

svn mkdir trunk 
(for each file or directory that is not called trunk:) 
svn mv FILEorDIR trunk/ 

但是,這有效地刪除所有文件,然後再添加它。有沒有更好的辦法?

謝謝。

回答

9

這與我過去所做的相似。你的解決方案實際上是拷貝每個文件,然後刪除原來的。由於Subversion實現副本的方式,每個文件的歷史記錄都被保留下來。

完成此操作後,您可以使用svn switch將現有結帳指向新位置。

+0

你可以給SVN開關確切的命令?另外,是否有辦法強制切換到不運行的工作副本中的最新版本? – 2010-07-02 13:44:49

+0

@Vijay開發:我建議全部細節。[`svn的文件之開關(http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.switch.html)。 – 2010-07-02 21:44:49

3

如果您使用eclipse IDE和Subclipse進行SVN,那麼您可以繼續在SVN中創建文件夾,並將所有文件/目錄從根目錄移動到trunk目錄,然後將ProjectName/trunk簽出到eclipse工作區。

+1

此外,如果您打算複製到乾淨的存儲庫(沒有任何項目簽入,因此它沒有中繼/分支/標籤結構),在Eclipse中,您可以創建trunk/branches/tags結構與回購>新建>項目結構...>單片。 之後,只需複製/粘貼源回購的所有元素。 – Saran 2012-04-06 11:28:32

1

這裏給出使用svn + ssh方法在unix終端的svn根目錄下創建trunk文件夾的方法。 「項目名稱」爲根「標識符」當您創建的svn項目:

svn mkdir svn+ssh://[email protected]/projectname/trunk -m "Create the trunk folder" 
13

我有完全相同的問題,並通過幾個不同的頁面之後尋找解決它(這個包含)。這裏是我的解決方案:

注:開始之前,如果你打算使用svn switch,讓您的工作拷貝,並避免再次檢查了回購,這是最好的,以確保你的工作副本是最新的,並沒有未提交的變更。

在與解決方案...

//REPO_URL = The URL for the repo on the SVN server. 
//In my case it was https://IP_ADDRESS:PORT/svn/my_repo 

//Make the trunk dir in the root of your SVN repo 
svn mkdir REPO_URL/trunk -m "making trunk dir" 

//Move everything from your root dir to your new trunk dir 
svn move REPO_URL/A_FOLDER REPO_URL/trunk/A_FOLDER -m "moving folders to trunk" 
svn move REPO_URL/ANOTHER_FOLDER REPO_URL/trunk/ANOTHER_FOLDER -m "blah" 
svn move REPO_URL/A_FILE.TXT REPO_URL/trunk/A_FILE.TXT -m "moving files to trunk" 
//Keep going until you've moved everything from your root dir to the trunk dir... 

所以,現在,你的SVN服務器上,一切都在trunk文件夾。甜!

但我的回購是60GB和遠程服務器上。我寧願不再檢查一遍。 svn switch將允許您將現有的工作副本指向新的trunk目錄,以便您可以繼續使用您擁有的副本。進入您的工作副本的根文件夾並運行svn switch REPO_URL/trunk --ignore-ancestry。應該說At revision X其中X是您將所有文件從根目錄移動到trunk目錄後的修訂版本。而已!也許做的好措施:)

0

舊後一個SVN更新,但我也有同樣的問題,我的所有回購是在根,而不是在樹幹。這在試圖使用簡單的git svn clone命令時出現問題。經過試驗和錯誤的時間,這是一個簡單的:

git svn clone --username byname http://www.MySVNserver.com:81/repos/project1 --no-metadata --trunk=.