2014-12-27 82 views
1

我在文件服务器上有一个SVN回购(我知道这不是最佳实践),并且其中一个最新修订已损坏。我在本地复制了我的回购,路径是C:\ SVNLOCAL \ SVNRepos。损坏的提交是r 1070.我做了一个将svnadmin回购到r 1069(svnadmin dump C:\SVNLOCAL\SVNRepos -r 1069 > r1069.dump)并加载(svnadmin load C:\SVNLOCAL\RECOVER < C:\SVNLOCAL\r1069.dump)并将其加载到新路径的转储,但即使在取消选中停止重命名时,它也不会显示历史记录。SVN转储/重新加载具有历史记录的特定版本

有两个问题,我可以在revs文件夹 - SVNRepos \ db \ revs \ 1 \ 1070+中删除1069后的任何转速。我认为这不是那么简单,我需要做转储和重新加载。如果是这样,我该如何做到这一点,同时保持历史不变。

基本上,我只是想恢复到r1069,但如果我试图做它反对回购它说1070有一个意外的文件结束并停止死亡。我想转储和装载是我唯一的选择。

回答

1

您需要使用两(2)个版本参数(开始和结束修订版)。 转储命令将转储所有路径在开始修订并将下一个修订(直到结束修订)存储为增量。

正确的命令应该是:

svnadmin dump C:\SVNLOCAL\SVNRepos -r 0:1069 >r1069.dump 

你不应该从你的SVN回购删除最后一个版本,因为你可能会损坏库。如果你有一个svn 1.8.x版本库,你至少会销毁sqllite-cache。

尝试始终通过转储文件进行操作。

+0

彼得,谢谢。我想通过直接更改文件来炸毁我的回购,但如此令人沮丧地看到,一个损坏的提交修订会搞砸了。我正在尝试您的修复程序,并在完成后加载它。如果我的回购完整到1069,我会标记你的答案 – thekonger 2014-12-27 16:46:01