如何将svn文件夹移动一级

时间:2010-09-09 18:10:37

标签: svn tortoisesvn repository

我需要将svn文件夹移到一个级别并保留所有历史记录

来自https://myserver.com/svn/Project/trunk/的所有文件和目录 进入https://myserver/svn/Project/

我使用命令:

svn move https://myserver.com/svn/Project/trunk/ https://myserver/svn/Project/

但它说:

  

svn:无法移动路径“https://myserver.com/svn/Project/trunk/”    自己

谁知道如何解决这个问题? 谢谢!

7 个答案:

答案 0 :(得分:21)

我也在寻找这个。然后我开始寻找一个解决方案而我找不到一个解决方案,除了它确实让我想到了一个解决方案。

您希望命令svn mv ./folder ./将所有内容从./folder移至./。实际上并非如此,它会将folder移动到当前目录中。由于这已经存在,命令失败。

因此,解决方案是将 ./folder内的所有内容移至./。实际上,以下命令就是这样:

svn mv ./folder/* ./

答案 1 :(得分:10)

如果您愿意使用TortoiseSVN,那么您只需使用存储库浏览器移动该文件夹即可。这就是我通常移动文件夹的方式,非常简单和无痛。

答案 2 :(得分:1)

我不知道你是否可以这样移动,我个人会检查存储库,移动文件系统中的文件夹然后提交更改,在一个位置删除它并在另一个位置添加。

答案 3 :(得分:1)

尝试:

  

svn switch --relocate https://myserver.com/svn/Project/trunk/ https://myserver/svn/Project/

请先在单独的存储库中测试一下,然后再在真实存储库中运行它!

答案 4 :(得分:1)

我今天遇到了类似的问题,但我不知道如何将它从乌龟移开,因为我也有该文件夹的设置。

如果新位置https://myserver/svn/Project/应该只包含旧位置的项目,那么我就是这样做的:

  • https://myserver.com/svn/Project/trunk/移至新的临时位置(例如https://myserver/svn/TempProject/);

  • 删除了您要使用的现有位置(https://myserver/svn/Project/);

  • https://myserver/svn/TempProject/重命名为https://myserver/svn/Project/

这对我有用。它保留了所有的历史记录,svn设置等。历史记录只是从所有移动的东西中得到了一些新的条目。

答案 5 :(得分:0)

我不相信您可以直接转到现有目录(尤其是存储库根目录)。也许--force选项可以提供帮助。

如果可以检查整个仓库,你可以将每个目录从主干移到上层,这似乎是更可靠的解决方案

svn mv * ..
某些svn客户端不支持

*

答案 6 :(得分:-1)

  1. 查看https://myserver.com/svn一些工作副本
  2. 删除目录“Project”
  3. 将Project / trunk的最新版本复制到工作副本的根目录
  4. 提交