【问题标题】:How to migrate SVN repository with no history?如何迁移没有历史记录的 SVN 存储库?
【发布时间】:2014-08-02 03:28:41
【问题描述】:

我在这里看到一个关于如何迁移具有历史的存储库的大量回答问题,但我有一个没有历史的项目(新开发,尚未部署,一切在主干)。更重要的是,SVN 管理员不会使用更高级别的命令(我怀疑这些命令用于迁移历史记录)来移动项目,我没有权限。

所以我想做的或多或少是,将代码从 repo_1 子目录 TRUNK 中复制出来,而不进行任何检查,然后将代码放入新的空 repo_2 子目录 TRUNK。

最好的方法是什么?

=========================

尽管下面的答案得到了赞成,但下面的第一条评论为这种非命令行类型的开发人员提出了最简单的解决方案。这就是我所做的。

  1. 使用 Windows 资源管理器从当前工作区复制并将副本粘贴到不同的 保留文件夹
  2. 已删除新副本中的 .svn 文件夹
  3. 从项目视图中删除旧项目(复选框:选中删除基础文件)[根据当前工作区的定义,这也将其删除]
  4. 从保留文件夹作为“现有项目”导入到当前工作区
  5. 从 SVN 存储库视图中删除旧的 SVN 存储库
  6. 将新的 SVN 存储库添加到 SVN 存储库视图
  7. 将新项目签入新的 SVN 存储库

【问题讨论】:

  • 除了svn export从一个地方输入代码,svn add在另一个地方输入代码之外,您还想保留哪些额​​外的元数据?

标签: svn


【解决方案1】:

三种方法:

使用svn.exe客户端:

  1. svn export <url-to-old-repo>,
  2. svn import <url-to-new-repo>

在服务器端使用svnadmin dumpsvnadmin load(需要对文件系统上的存储库具有完全读取权限):

  1. svnadmin dump path-to-original-repository -r HEAD > MyDump.svndump
  2. svnadmin create NEWREPOSITORYNAME
  3. svnadmin load NEWREPOSITORYNAME < MyDump.svndump

您可能希望使用 --parent-dir DIR 参数和 svnadmin load 命令将转储加载到新存储库的 / 根目录以外的其他路径。

使用svnrdump 工具(在Subversion 1.7+ 中可用)。 “模仿”工具 svnadmin dumpsvnadmin load 功能,但远程操作。您不需要对原始和目标存储库具有读/写文件系统访问权限,因为该工具像 Subversion 客户端一样远程操作,例如通过 HTTPS 协议。因此,您需要对原始存储库具有读取权限,并对目标存储库具有读取/写入权限。

【讨论】:

  • 只有第二个选项要求您拥有管理员权限。第三个和第一个没有。
  • 无权执行这些操作。
【解决方案2】:
  • 从一个存储库中签出代码
  • 删除svn元数据find . -name '.svn' | xargs rm -rf
  • 在新存储库中导入源

【讨论】:

  • 或者,要保存第 2 步,请使用“export”而不是“checkout”。
猜你喜欢
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 2017-03-27
  • 2011-01-21
相关资源
最近更新 更多