Как полностью удалить тег 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
инструмент:
- Дамп хранилища с помощью
svnadmin dump /var/svn-repos/$PROJECT > /tmp/$PROJECT.dump
Отфильтруйте историю репозитория, используя
svndumpfilter
:svndumpfilter exclude "tags/version 3.6.2" --drop-empty-revs < /tmp/$PROJECT.dump > /tmp/filtered.dump 2>/tmp/filterlog.txt
Посмотри хоть
filterlog.txt
чтобы убедиться, что фильтрация истории завершена, как и ожидалось.Создать новый пустой репозиторий, используя
svnadmin create
команда.Загрузите отфильтрованный дамп в новый репозиторий, используя
svnadmin load
команда. Репозиторий будет иметь всю историю, но коммиты, связанные с "тегами / версией 3.6.2", больше не существуют.