У меня есть файл дампа 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