svn存储库恢复

时间:2012-11-08 05:27:28

标签: svn svnadmin

我需要将一些分支repo合并到另一个分支repo中,而是错误地使用了“svn copy”,它覆盖了目标存储库,因此丢失了一些文件。好消息是我使用`svnadmin dump'创建了每日备份,但我不确定最好如何继续恢复丢失的文件,并保留以后添加的新文件。

我在想这样做:

  1. 创建一些svn临时存储库
  2. 使用“svn load / path / to / temp-repository /
  3. cd / path / to / temp-repository /
  4. 递归删除所有.svn dirs
  5. 转到我已覆盖的分支,并使用rsync将丢失的文件发送到工作存储库。
  6. 不确定这是否是最佳方法。有什么想法吗 ?

1 个答案:

答案 0 :(得分:1)

我有更好的消息

Subversion存储更改之间的所有历史记录。

当您意外svn copy时,您将其他提交添加到目标分支中。你可以

  • svn up GOODREV很好地提交(或svn co BRANCH@GOODREV进入新的WC)并在糟糕的情况下提交(次要编辑 - 保存 - 提交)
  • 通过反向合并撤消错误提交

对于svnadmin转储

您必须确定这些备份是增量( - 增量)还是完整备份。如果是完整的,你必须找到GOODREV存在的备份,svnadmin load这个转储到 new repo,svn copy从NEW-REPO分支到OLD-REPO分支,kill恢复存储库

提示:您必须更好地学习存储库管理:第4-5页只是谵妄 - SVN存储库具有完全不同的文件树,而且存储库的子树不存在为具有相同结构的物理树(并且.svn文件正在工作复制WC元数据的属性和存储)

svndump的逻辑和更好(比你的)用法再次不同。如果您仍想隐藏眼睛的错误,那么

  • 为修订范围(-r LOWER:UPPER选项)创建新的完整转储,这将排除BADREVISION。
  • 禁用所有连接
  • 删除旧存储库(rm REPODIR + mkdir REPODIR)
  • 从转储中恢复仓库