Если вы можете поймать его, как только оно будет зафиксировано, метод svnadmin dump / load не будет слишком болезненным. Предположим, кто-то случайно совершил gormundous-raw-image.psd в Revision 3849. Вы можете сделать это:
svnadmin dump /var/repos -r 1:3848 > ~/repos_dump
Это создаст файл дампа, содержащий все, вплоть до Revision 3848. В этот момент вы можете использовать svnadmin create и svnadmin load для восстановления хранилища без оскорбительного коммита, поскольку все изменения, сделанные вами в хранилище, могут структура каталога - хуки, символические ссылки, изменения прав доступа, файлы аутентификации и т. д. - необходимо скопировать из старого каталога. Вот пример остальной части сеанса bash, который вы можете использовать для завершения операции:
svnadmin create /var/repos-new
svnadmin load /var/repos-new < ~/repos_dump
cp -r /var/repos/conf /var/repos-new
cp -r /var/repos/hooks /var/repos-new
mv /var/repos{,-old} && mv /var/repos-new /var/repos
Я уверен, что это будет более болезненным, чем больше истории у вашего хранилища, но это работает.