Как полностью удалить тег SVN, содержащий пробелы?

Я попытался очистить хранилище svn и удалить тег, содержащий пробел, поэтому все теги и ветви соответствуют git:

PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
svn rm "$svnrepo/tags/version 3.6.2"

но, похоже, это не работает: как мне преобразовать svn репо в git с помощью reposurgeon?

Как мне удалить это полностью?

1 ответ

Решение

Вы должны предоставить сообщение журнала коммитов при использовании svn rm удалить файл в удаленном хранилище. При выполнении удаления, переименования, копирования и т. Д. Через URL действие приводит к немедленной фиксации, то есть к новой ревизии в репозитории SVN, для которой требуется сообщение журнала.

Так что команда должна быть:

PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
svn rm -m "Removed the tag" "$svnrepo/tags/version 3.6.2"

Остерегайтесь, используя svn rm не удалит тег полностью. Редакция, в которой был создан этот тег, все еще будет существовать в истории хранилища.

Единственный вариант полного удаления пути - отфильтровать историю репозитория svndumpfilter инструмент:

  1. Дамп хранилища с помощью svnadmin dump /var/svn-repos/$PROJECT > /tmp/$PROJECT.dump
  2. Отфильтруйте историю репозитория, используя svndumpfilter:

    svndumpfilter exclude "tags/version 3.6.2" --drop-empty-revs < /tmp/$PROJECT.dump > /tmp/filtered.dump 2>/tmp/filterlog.txt

  3. Посмотри хоть filterlog.txt чтобы убедиться, что фильтрация истории завершена, как и ожидалось.

  4. Создать новый пустой репозиторий, используя svnadmin create команда.

  5. Загрузите отфильтрованный дамп в новый репозиторий, используя svnadmin load команда. Репозиторий будет иметь всю историю, но коммиты, связанные с "тегами / версией 3.6.2", больше не существуют.

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