【问题标题】:SVN - create a new repository and add trunk and branches from an old repositorySVN - 创建一个新存储库并从旧存储库添加主干和分支
【发布时间】:2011-03-07 15:26:19
【问题描述】:

我想重命名我的 SVN 存储库。我尝试使用 svn copy 命令从一个存储库复制到另一个存储库,但这不起作用:

F:\Old>svn copy https://devserver2.sockltd.local/svn/Dantooine https://devserver2.sockltd.local/svn/IOCPTest

svn: Repository moved permanently to 'https://devserver2.sockltd.local/'; please relocate

当我查看存储库列表时,IOCPTest 不存在。

有没有办法重命名存储库,或者我应该只导出旧存储库并将其内容转储到新存储库中。问题是,使用这种方法,我会丢失分支和修订历史记录。

谢谢

【问题讨论】:

  • 您如何托管您的存储库?阿帕奇,svnserve?
  • 您要克隆一个 repo(问题标题)还是重命名一个 repo(问题正文)?如果命令打印“存储库永久移动”,您为什么说它不起作用
  • 我想重命名存储库。由于没有这样做,我试图复制存储库。该命令声称有效。但它没有。不存在这样的存储库!
  • 不,“永久移动/请重新定位”是一条错误消息,告诉您您的工作副本需要更新 - 我不认为这是一条成功消息(这意味着您需要执行svn switch --relocate)。很明显为什么它告诉你这个操作我不知道。从 SVN 客户端进行这种存储库操作是不可能的 - 您需要在服务器上进行。

标签: svn tortoisesvn visualsvn-server


【解决方案1】:

我在 VisualSVN 服务器的主应用程序窗口中发现了一项功能——“导入现有存储库...”

它自动完成将一个存储库复制到新存储库的任务,同时提供指定新存储库名称的便利。它可以很好地满足我的需要,并且也可以复制分支和修订历史:)

【讨论】:

  • 作为一般规则,存储库只是一个目录,它不跟踪/关心/知道它的名称是什么。所以你通常可以重命名目录,你就完成了。这里的问题是 VisualSVN 服务器在 repo 之上提供了一些附加功能(例如访问控制列表),如果您重新命名原始目录,它们会丢失。据我所知,VisualSVN Server 不提供用于重命名的 GUI,但它提供了(正如您已经猜到的)克隆 repos 的功能。
【解决方案2】:

这取决于 VisualSVN 如何在后台组织您的存储库。如果 Dantooine 是一个单独的存储库(即有自己独立的版本号),那么最简单的做法是复制/重命名服务器上的 Dantooine 目录。该名称不包含在存储库数据中 - 就 subversion 而言,这只是数据传输的 URL,它通过 GUID revprop 识别存储库 - 因此在您的客户端上重命名后跟 svn switch --relocate 应该足以移动它。

如果您想创建存储库的完整副本/分支,您可以再次复制 Dantooine 目录。

或者,如果您真的想从存储库中复制/过滤分支,您可以使用svnadmin dump 备份旧存储库并使用svndumpfilter python 脚本删除您不想要的分支,然后@ 987654324@ 将过滤后的备份加载到新的存储库中。

不过,所有这些可能都不是 VisualSVN 的处理方式 - 我自己从未使用过。

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 2011-11-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多