SVN在现有的存储库上创build中继目录

我正在开发一个没有trunk / branches / tags目录结构的项目 – 也就是说。 一切都在svn回购的根源。

我想创build一个中继目录,并在根目录,并将根目录中的所有内容移动到新的中继目录。

做这个的最好方式是什么?

我考虑的第一件事是

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

但是,这有效地删除每个文件,然后再次添加它。 有没有更好的办法?

谢谢。

这和我过去的做法很相似。 您的解决scheme实际上复制每个文件,然后删除原件。 由于Subversion实现副本的方式,每个文件的历史logging都被保留下来。

这样做后,您可以使用svn switch在新的位置指出现有的结帐。

我有完全相同的问题,并通过查看几个不同的页面(包括这一个)后解决它。 这是我的解决scheme:

注意:在开始之前,如果您打算使用svn switch保留工作副本并避免再次检出回购,最好确保您的工作副本是最新的并且没有未提交的更改。

与解决scheme…

 //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服务器上,一切都在中继文件夹中。 甜!

但我的回购是60GB,并在远程服务器上。 我宁愿不再检查出来。 svn switch会让你将现有的工作副本指向新的trunk目录,这样你就可以继续使用你的副本了。 进入你的工作副本的根文件夹并运行svn switch REPO_URL/trunk --ignore-ancestry 。 应该说At revision X ,在将所有文件从根目录移动到中继目录之后, X是修订版本。 而已! 也许做一个SVN更新为好措施:)

如果你正在使用eclipse IDE和Subclipse的SVN,那么你可以继续前进,并在SVN中创build文件夹,并将所有的文件/目录从根目录到中继目录,然后检出项目名称/主干为您的Eclipse工作区…

这里给出了使用svn + ssh方法在Unixterminal的svn根目录下创buildtrunk文件夹的方法。 “projectname”是在svn中创build项目时的根“标识符”:

 svn mkdir svn+ssh://username@host/projectname/trunk -m "Create the trunk folder" 

你可能想看看svnadmin工具。

说实话,我以前没有尝试过,你可能会得到一个人的答案,但你可以从这样的工作:

你应该能够初始化一个新的仓库,在其中创build一个“trunk”目录,然后将你以前的仓库转储到“trunk”中。