是否有干净的方式移动/到/ trunk?

Met*_*ile 36 svn

我做了创建一个版本库中的错误不平常trunk,branchestags目录.也就是说,项目的根目录映射到存储库的根目录.现在我想创建一个功能分支,但是没有好的地方可以放置它.我想要做的是移动//trunk,保持其性质和历史.我运气不好吗?

Joh*_*ter 35

干净的方法是使用svnadmin转储整个存储库

svnadmin dump
Run Code Online (Sandbox Code Playgroud)

然后在根目录下创建一个包含trunk目录的新存储库,并重新加载转储

svnadmin load --parent-dir trunk

如果你做了一个svn移动,那么如果你在移动之前更新回到修订版,那将会搞砸,因为文件将移回到它们之前的位置,这可能不是你想要的.

  • @sleske - 我之前已经处理过这个问题 - 请参阅我关于做svn移动问题的说明.这是正确的方法. (2认同)

Wol*_*ram 26

使用wherehere的答案,它工作正常,但想添加包括参数的命令,即在svn服务器的命令行上执行:

  1. 将现有存储库转储到文件中:

    svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个新的存储库:

    svnadmin create /path/to/mynewrepo/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加trunk/文件夹,并提交它,在工作拷贝目录:

    mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用trunkas将dumpfile加载到新存储库中parent-dir:

    svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
    
    Run Code Online (Sandbox Code Playgroud)

  • 在指令中很容易遗漏,但这应该在*server*上运行,而不是在工作副本上运行.否则你将得到"无法打开文件'/ path/to/myrepo/format':没有这样的文件或目录." (3认同)