如果您可以在它提交后立即捕获它,那么 svnadmin 转储/加载技术不会太痛苦。假设有人在修订版 3849 中不小心提交了 gormundous-raw-image.psd。你可以这样做:
svnadmin dump /var/repos -r 1:3848 > ~/repos_dump
这将创建一个转储文件,其中包含直到并包括修订版 3848 在内的所有内容。此时,您可以使用 svnadmin create 和 svnadmin load 重新构建存储库而不会出现违规提交,需要注意的是您在存储库的目录结构中所做的任何更改 - - 挂钩、符号链接、权限更改、身份验证文件等 - 需要从旧目录复制过来。以下是您可能用来完成操作的 bash 会话的其余部分的示例:
svnadmin create /var/repos-new
svnadmin load /var/repos-new < ~/repos_dump
cp -r /var/repos/conf /var/repos-new
cp -r /var/repos/hooks /var/repos-new
mv /var/repos{,-old} && mv /var/repos-new /var/repos
我敢肯定,您的存储库拥有的历史越多,这将越痛苦,但它确实有效。