Мне пришлось восстанавливать подрывной сервер из резервной копии, сделанной накануне вечером. После восстановления все работало нормально, кроме одного репозитория.
Рабочая копия была зафиксирована на сервере после последней резервной копии, поэтому в этой рабочей копии были более новые файлы, чем в восстановленном репозитории. Я попытался зафиксировать файлы с помощью tortoise, но SVN не распознал, что файлы в рабочей копии были новее, чем файлы в репозитории.
Я использую Subversion Server 1.6.5 на Windows 2003 Server и TortoiseSVN 1.6.8 64 бит на 64-битном клиенте Win7.
Спасибо, Джон
Это связано с тем, что SVN использует локальный «кеш» файлов рабочих копий, чтобы решить, что отличается от репозитория (поэтому ему не нужно связываться с репозиторием, чтобы получить файл, сравнить его, просто чтобы узнать, что вы поменял).
В этом случае это работает не так, как вы хотите, поскольку рабочая копия (и ее кеш) не синхронизированы с репо. Когда вы изменяете этот файл и фиксируете его, вы обнаружите, что SVN повторно синхронизируется (и, без сомнения, выдаст ошибку «что происходит»).
Итак, вам необходимо вручную повторно синхронизировать кэш рабочей копии. Во-первых, сделайте копию каталога рабочей копии без кеша, т.е. каталогов .svn. (найдите .svn, используя старую собачку Windows Search, и удалите все эти каталоги)
Затем обновите каталог, чтобы получить текущий статус репо, я думаю, SVN обновит кеш и объединит ваши локальные изменения в файлы в репо, так что вы вернетесь к нормальному состоянию - т.е. измененные файлы получат 'измененный ', а затем вы можете зафиксировать изменения. Я почти уверен, что именно это и произойдет, но я всегда параноидально отношусь к потере данных после восстановления, поэтому сначала вы сделаете копию. Если что-то пойдет не так, вы можете просто перезаписать файлы, полученные из репозитория, на свой старый WC, и он будет отображаться как измененный. совершить как обычно.
В Windows создайте два командных файла:
Первый
[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
Еще раз прикоснитесь к новым файлам и повторите попытку.