如何更改 Subversion 工作副本 UUID?

如何更改 Subversion 工作副本 UUID?

我最近通过以下方式将 Subversion 存储库从旧的 1.2.3 版本更新到 1.6.0svnadmin 转储/加载。旧存储库都使用相同的 UUID(存储库是通过复制模板存储库创建的)。我通过以下方式更改了几个新存储库的 UUIDsvnadmin 设置uid是唯一的。我不能直接重新定位这些存储库的现有工作副本,因为 UUID 不同。我知道导出工作副本并从新存储库中签出,但我想知道是否有办法直接更改工作副本的 UUID,比如svnadmin 设置uid对存储库有用。

答案1

您需要编辑提取的存储库中的所有“条目”文件。如果存储库有很多目录,find + sed 脚本将快速完成该任务。

答案2

自此以后的新答案Subversion 1.7工作副本格式。您需要sqlite3命令行实用程序。

在您的工作副本的根目录中,现在有一个.svn/包含 SQLite 数据库的文件夹。您可以UUID使用以下命令查询工作副本的当前存储库:

$ sqlite3 .svn/wc.db 'select uuid from REPOSITORY where id=1'
b6dc3e6c-5320-4549-b231-c153d86d7525

因此,UUID可以通过以下方式进行更改:

$ sqlite3 .svn/wc.db 'update REPOSITORY set uuid="1c0d1ec1-2326-0410-bef5-eb29cddfc032" where id=1'

当然,.svn/wc.db在调用更新查询之前,请保留文件的备份。您的存储库实体几乎不可能具有不同的 ID 或该表中有多行,但您可以检查是否获得了意外结果。

答案3

下面是一个适用于 SVN 1.6 及以下版本的命令:

find . -type f -name entries -exec sed -i 's/old-uuid/new-uuid/g' {} \;

old-uuid和替换new-uuid为实际的 ID。

答案4

这部分 ”管理存储库 UUID”svn红豆书中或许有你要找的答案。

相关内容