Назад | Перейти на главную страницу

Как я могу использовать командный файл для дампа изменений только за последние несколько недель в SVN?

Раньше мы делали резервную копию нашего полного дампа SVN каждую ночь, но теперь репозиторий стал слишком большим.

Если бы я был готов отрезать историю ревизий, скажем, за 2 недели, как бы я сделал пакетный скрипт для выполнения этого дампа?

я понимаю svnadmin dump может принимать диапазон ревизий, но я не уверен, как написать скрипт, чтобы получить номер ревизии, соответствующий времени в прошлом, например 14 дней назад.

В тексте справки это не отображается, но вы можете указать диапазон редакций, используя даты или несколько ключевых слов, так же, как вы можете с обычным svn команды. Чтобы сбросить коммиты с предыдущего месяца до текущего HEAD:

svnadmin dump /path/to/repo/ -r {2011-05-20}:HEAD > /path/to/dumpfile

Имейте в виду, что этот метод означает, что вам необходимо убедиться, что ваши снимки захватывают каждую ревизию и не перекрываются, поскольку файлы дампа не содержат явной информации о нумерации ревизий. Метод восстановления svnadmin load просто воспроизведет и изменит нумерацию ваших ревизий, если что-то отсутствует или пересекается.

Я должен упомянуть svnadmin hotcopy как вариант резервного копирования, поскольку они намного быстрее дампов. (Вы можете использовать обычные автономные дампы из горячей копии, если вам нужны текстовые дампы).