Восстановление хранилищ Subversion из резервной копии

Мне пришлось восстановить сервер Subversion из резервной копии, снятой прошлой ночью. После восстановления все работало нормально, кроме одного репозитория.

Рабочая копия была зафиксирована на сервере после последней резервной копии, поэтому в этой рабочей копии были более новые файлы, чем в восстановленном хранилище. Я пытался зафиксировать файлы с помощью черепахи, но SVN не распознал, что файлы в рабочей копии были новее, чем в хранилище.

Я использую Subversion Server 1.6.5 на Windows 2003 Server и TortoiseSVN 1.6.8 64 бит на Win7 64 бит клиент.

Спасибо Джон

3 ответа

Это связано с тем, что SVN использует локальный "кэш" файлов рабочих копий, чтобы решить, что отличается от хранилища (поэтому ему не нужно связываться с репозиторием, извлекать файл, просматривать его, просто чтобы выяснить, что вы Я изменил это).

В этом случае это не работает так, как вы хотите, так как рабочая копия (и ее кэш) не синхронизированы с репозиторием. Когда вы изменяете эти файлы и фиксируете их, то обнаруживаете, что SVN будет самосинхронизироваться (и, без сомнения, выдаст ошибку "что происходит").

Итак, вам нужно заново синхронизировать кеш рабочей копии вручную. Во-первых, возьмите копию каталога рабочей копии без кэша - то есть каталогов.svn. (найдите.svn, используя старую собачку Windows Search, и удалите все эти каталоги)

Затем обновите каталог, чтобы получить текущий статус репо, я думаю, что SVN обновит кэш и объединит ваши локальные изменения с файлами в репо, так что вы вернетесь в нормальное состояние - то есть измененные файлы получат "модифицированные". значок, а затем вы можете зафиксировать изменения. Я почти уверен, что это произойдет, но я всегда параноидален по поводу потери данных после восстановления, поэтому вы сначала сделаете копию. Если что-то пойдет не так, вы можете просто перезаписать файлы, извлеченные из репозитория, на ваш старый WC, и он будет отображаться как измененный. совершать как обычно.

Коснитесь новых файлов еще раз и повторите попытку.

На окнах создайте два командных файла:

Первый

[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
Другие вопросы по тегам