如何将 v2 升级到 v3 FSFS 颠覆文件系统

cbp*_*cbp 9 svn

首先,我试图将分支与主干重新集成(使用 TortoiseSVN),但我收到错误消息“查询合并信息需要 FSFS 文件系统架构的第 3 版;文件系统 E:/MyRepository/ 仅使用第 2 版”。

难道真的不可能在早期版本的 subversion 中重新集成分支吗?或者有另一种方法吗?

无论如何,如何将文件系统从版本 2 升级到版本 3?

Iva*_*kov 8

升级 Subversion 存储库不需要转储/加载。使用 svnadmin 升级命令:

svnadmin upgrade <path-to-repos>
Run Code Online (Sandbox Code Playgroud)

注意:svnadmin upgrade“仅执行完成此操作所需的最少工作量,同时仍保持存储库的完整性。虽然转储和后续加载保证了最优化的存储库状态,但 svnadmin upgrade 不会。” - 另请参阅svnadmin 升级文档


小智 6

您没有指定服务器运行的 Subversion 版本。但是根据您在问题中提供的消息,它可能是 1.4.x 版本或更旧的版本。我不记得是否提供了用于从 1.4.x 转换到 1.5.x 的升级命令,但是将存储库从版本 2 转换为版本的确定文件方式是转储和加载。但这并不重要,您无论如何都希望安装 1.6.x 以使用最新版本。因此,您需要执行以下步骤:

  • 如果还没有升级到 Subversion 1.6.x
  • 使用 svnadmin dump 转储您现有的存储库
  • 创建一个新的 repo,命名为 _new
  • 使用 svnadmin load 使用旧的转储加载新的 repo
  • 将 uuid 文件从旧仓库复制到新仓库
  • 将旧存储库重命名为 _old
  • 将新存储库重命名为

有关具体示例,另请参阅 Subversion FAQ http://subversion.apache.org/faq.html#dumpload

这应该让您得到照顾,uuid 文件将使您的客户免于惊慌失措。做一个 svn update 以确保。

  • 来自`svnadmin help load`消息:`--force-uuid:将repos UUID设置为在流中找到的那个,如果有的话`。简而言之:无需播放文件 (2认同)

小智 5

伊万有一个很好的技巧,我试过了,很简单。

svnadmin upgrade <path-to-repos>
Run Code Online (Sandbox Code Playgroud)

我在 Ivans 示例中遗漏的一件事可能对其他人有用:

前任。

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)
Run Code Online (Sandbox Code Playgroud)

不要将 svnadmin 指向 db 目录,而是指向包含 db 目录的目录。