我最近通过svnadmin dump/load将 Subversion 存储库从旧的 1.2.3 版本更新到 1.6.0 。旧存储库都使用相同的 UUID(存储库是通过复制模板存储库创建的)。我已经通过svnadmin setuuid将几个新存储库上的 UUID 更改为唯一的。我不能只是重新定位这些存储库的现有工作副本,因为 UUID 不同。我知道导出工作副本并从新存储库签出,但我想知道是否有一种方法可以就地更改工作副本的 UUID,就像svnadmin setuuid对存储库所做的那样。
Yve*_*tin 17
自Subversion 1.7工作副本格式以来的新答案。您需要sqlite3命令行实用程序。
在您的工作副本的根目录中,现在有一个.svn/包含 SQLite 数据库的文件夹。您可以使用以下命令查询UUID以您的工作副本已知的当前存储库:
$ sqlite3 .svn/wc.db 'select uuid from REPOSITORY where id=1'
b6dc3e6c-5320-4549-b231-c153d86d7525
Run Code Online (Sandbox Code Playgroud)
因此,UUID可以通过以下方式进行更改:
$ sqlite3 .svn/wc.db 'update REPOSITORY set uuid="1c0d1ec1-2326-0410-bef5-eb29cddfc032" where id=1'
Run Code Online (Sandbox Code Playgroud)
当然,.svn/wc.db在调用更新查询之前保留文件的备份。您的存储库实体几乎不可能有不同的 id 或该表中有多行,但您可以检查是否得到意外结果。
这是一个适用于 SVN 1.6 及以下版本的命令:
find . -type f -name entries -exec sed -i 's/old-uuid/new-uuid/g' {} \;
Run Code Online (Sandbox Code Playgroud)
用实际 ID替换old-uuid和new-uuid。
| 归档时间: |
|
| 查看次数: |
21918 次 |
| 最近记录: |