svnadmin дамп только текста, без двоичных файлов

Можно отфильтровать дамп SVN, сгенерированный svndamin dump, поэтому он не будет включать в себя закодированные двоичные данные, только текстовые дельты и данные?

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

Попробовал и потерпел неудачу, уже

  1. Не практично обрабатывать svn log дифференциалы. Это большой и старый репозиторий, и получение различий только в течение короткого периода времени занимает много времени и часто застревает.
  2. Бинарные файлы разбросаны по всему и не хранятся по одному известному пути, поэтому я не могу использовать svndumpfilter чтобы исключить их - если нет какого-либо способа использовать этот фильтр с регулярными выражениями, например *.jar,

2 ответа

Решение

svndumpfilter является частью любой установки Subversion

svndumpfilter exclude - Отфильтровывать узлы с заданными префиксами из потока дампа.

Начиная с Subversion 1.7, svndumpfilter может дополнительно обрабатывать PATH_PREFIXs не просто как явные подстроки, а как шаблоны файлов.

$ svndumpfilter exclude --pattern "*.OLD" < dumpfile > filtered-dumpfile
Excluding prefix patterns:
   '/*.OLD'

Я не знаю стокового инструмента для этого. Но это не должно быть трудно сделать, если вы начнете с этого модуля perl: SVN:: Dumpfilter

Один из примеров сценариев (svndump_delpathfilter), вероятно, довольно близок к тому, что вы хотите. Мой опыт работы с этим модулем заключается в том, что вам, вероятно, придется немного повозиться с ним, чтобы заставить его делать то, что вы хотите.

Теперь, я не думаю, что есть какой-либо способ надежно отличить двоичный файл от текстового файла, так как Subversion (на самых низких уровнях) на самом деле не волнует. Быстрое сканирование моего репозитория показывает, что свойство svn: mime-type не всегда установлено, и я не вижу других ориентировочных полей. Поэтому вам придется проверять по имени или (как-то) пытаться просмотреть содержимое файла (но я никогда не делал последнее).

Другие вопросы по тегам