我尝试清理svn存储库并删除包含空格的标记,因此所有标记和分支都符合git:
PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
svn rm "$svnrepo/tags/version 3.6.2"
但看起来,这并没有完成这项工作:How do I convert an svn repo to git using reposurgeon?
如何完全删除它?
答案 0 :(得分: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
不会完全删除标记。创建此标记的修订版仍将存在于存储库历史记录中。
完全删除路径的唯一选项是to filter the repository history 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
命令将筛选的转储装载到新的存储库。存储库将具有整个历史记录,但不再存在与“tags / version 3.6.2”相关的提交。