SVN在现有存储库上创建trunk目录

时间:2008-12-06 01:17:37

标签: svn

我正在开发一个没有trunk / branches / tags目录结构的项目 - 即。一切都在svn repo的根目录中。

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

这样做的最佳方式是什么?

我考虑的第一件事是

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

但这会有效删除每个文件,然后再次添加。还有更好的方法吗?

感谢。

7 个答案:

答案 0 :(得分:16)

我有完全相同的问题,并在查看了几个不同的页面(包括这个页面)后解决了它。这是我的解决方案:

注意:在开始之前,如果您打算使用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文件夹中。甜!

但我的repo是60GB并且在远程服务器上。我宁愿不再检查一下。 svn switch会让您将现有的工作副本指向新的trunk目录,以便继续使用您拥有的副本。进入工作副本的根文件夹并运行svn switch REPO_URL/trunk --ignore-ancestry。在将所有文件从根目录移动到trunk目录后,应该说At revision X其中X是修订版。而已!也许做一个SVN更新以获得良好的衡量标准:)

答案 1 :(得分:10)

这与我过去的做法类似。您的解决方案实际上复制每个文件,然后删除原始文件。由于Subversion实现副本的方式,每个文件的历史记录都会被保留。

执行此操作后,您可以使用svn switch在新位置指定现有结帐。

答案 2 :(得分:3)

如果您正在使用eclipse IDE和Subclipse for SVN,那么您可以继续在SVN中创建文件夹并将所有文件/目录从root移动到trunk目录,然后将ProjectName / trunk签出到eclipse工作区...

答案 3 :(得分:1)

这里给出了使用svn + ssh方法在unix终端的svn根目录中创建trunk文件夹的方法。 “projectname”是在svn:

中创建项目时的根“标识符”
svn mkdir svn+ssh://username@host/projectname/trunk -m "Create the trunk folder"

答案 4 :(得分:1)

旧帖子,但我也有同样的问题,所有我的回购都在根,而不是在中继。这在尝试简单的git svn clone命令时出现了问题。经过数小时的反复试验,这很简单:

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

答案 5 :(得分:0)

您可能需要查看svnadmin工具。

说实话,我之前没有尝试过,你可能会得到一个人的答案,但是你可以从这样的事情开始:

您应该能够初始化一个新的存储库,在其中创建一个“trunk”目录,然后将您之前的存储库转储到“trunk”中。

答案 6 :(得分:0)

我自己做了好几次并学到了这一点:如果您想保留以前 SVN 根目录的历史记录 + 保留所有 SVN 属性(如 ignore),您必须按照以下方式进行。 注意:我用 TortoiseSVN 完成了这一切,因为这种方式非常简单。但是您也可能会成功使用命令行。您还可以在下面找到使用 CLI 执行此操作的说明。

不要忘记为每个操作添加适当的 SVN 消息,以便您以后清楚地了解已经完成的操作。

示例存储库:/svn/my_project

TortoiseSVN 的步骤:

  1. 重命名当前项目目录 /svn/my_project 到主干 /svn/trunk
  2. 创建一个新目录/svn/my_project
  3. 移动 /svn/trunk/svn/my_project
  4. 切换 工作副本到新路径。选中“英戈尔血统”复选框。
  5. 放松

CLI 的步骤(未经测试!):

  1. 复制目录到新目录/svn/trunk/
  2. 删除旧目录/svn/my_project/
  3. 复制/svn/trunk/目录到新目录/svn/my_project/trunk
  4. 删除/svn/trunk/目录
  5. 切换工作副本到新目录