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

Как удалить пустые версии из существующего файла дампа svn?

У меня есть файл дампа svn, который включает «пустые» ревизии (они были созданы svnsync при синхронизации только подкаталога существующего репозитория).

Поскольку я хотел бы использовать репозиторий svnsync'd в качестве нового мастера (нет необходимости снова синхронизировать), я хотел избавиться от всех пустых ревизий.

К сожалению, запуск дампа через svndumpfilter, похоже, не удаляет пустые ревизии, вероятно потому, что svndumpfilter просматривает только те ревизии, которые он очищает сам с помощью параметра --exclude (см. Также Вот)

Я также изучал svndumptool, но, похоже, он не предоставляет эту функцию.

Можно ли как-нибудь отфильтровать эти ревизии?

это командная строка, которую я использую ... кажется, работает очень хорошо.

svnadmin dump <path_to_repo> | svndumpfilter2 <path_to_repo> [list of paths to keep] --renumber-revs --drop-empty-revs  |bzip2 --best > svn_dumpfile_full.bz

"список сохраняемых путей" может быть таким же простым, как ствол

но для этого требуется прямой доступ к svn-серверу.

Хорошо, я не решался ответить на этот вопрос, потому что решение не для слабонервных и может свести вас с ума.

Попробуйте изменить содержимое файла дампа вручную, удалив пустые версии из файла дампа. Вы также можете обнаружить, что вам нужно повторить все последовательности номеров ревизий и дважды проверить наличие копий, из которых копируемая ревизия действительно существует, и / или указать ее на правильную ревизию.

Здесь самая сложная часть: будьте осторожны, редактируя файл дампа. Один промах дополнительного ключа может привести к сбою загрузки ревизии, так как весь контент хешируется для контрольных сумм.

Удачи!

на самом деле я думаю, вам нужна опция '-renumber-revs' из svndumpfilter (или это svndumpfilter2) в дополнение к --drop-empty-revs