从备份恢复Subversion存储库

我必须从前一天晚上拍摄的备份映像中恢复一个颠覆服务器。 除了一个存储库之外,一切恢复正常。

在最新的备份之后,服务器上已经提交了一个工作副本,所以这个工作副本比恢复的版本库具有更新的文件。 我试图使用乌龟来提交这些文件,但SVN没有认识到工作副本上的文件比版本库中的文件更新。

我在Windows 2003 Server上使用Subversion Server 1.6.5,在Win7 64位客户端上使用TortoiseSVN 1.6.8 64位。

谢谢,约翰

这是因为SVN使用工作副本文件的本地“caching”来决定与存储库有什么不同(因此,它不必联系回购,以获取文件,以区分它,只是为了找出你已经改变了)。

在这种情况下,由于工作副本(及其高速caching)与回购库不同步,因此无法按您的要求工作。 当你改变这些文件并提交它们时,你会发现SVN会重新同步自己(并且毫无疑问地抛出一个“正在发生什么”的错误)。

所以,您需要手动重新同步工作副本caching。 首先,获取没有caching的工作副本目录副本 – 即.svn目录。 (使用旧版Windowssearch小狗search.svn并删除所有这些目录)

然后更新目录以获取回购的当前状态,我认为SVN将更新caching,并将您的本地更改合并到回购中的文件,所以你将恢复正常 – 即更改后的文件将得到“修改'图标,然后您可以提交更改。 我很确定这将会发生什么,但是我经常在恢复后丢失数据,这就是为什么你会先制作副本的偏执。 如果出现任何问题,您可以使用旧WC覆盖从回购库中获取的文件,并将其显示为已修改。 正常承诺。

在Windows上创build两个batch file:

第一

[dobackups.bat]

@echo off echo - BORN 05 SVN Repository export batch file - set Rep=C:\Repositories\ set BackUps=c:\backups CD %Rep% rem Don't need %Backup% because you're already changed to it. for /f %%R in ('dir/b') do call :1 %%R goto :eof :1 echo Exporteren van %Rep%%1 naar %Backups%\%1.bak "C:\Program Files\VisualSVN Server\bin\svnadmin" dump %Rep%%1 > %Backups%\%1.bak echo Done! echo ......................................... CALL WAIT 3 

[WAIT.BAT]

 @ping 127.0.0.1 -n 2 -w 1000 > nul @ping 127.0.0.1 -n %1% -w 1000> nul 

再次触摸较新的文件,然后再次尝试提交。