我试图清理 svn 存储库并删除包含空格的标签,因此所有标签和分支都符合 git:
PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
svn rm "$svnrepo/tags/version 3.6.2"
但似乎,这在这里不起作用:如何使用 reposurgeon 将 svn repo 转换为 git?
如何完全删除它?
我试图清理 svn 存储库并删除包含空格的标签,因此所有标签和分支都符合 git:
PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
svn rm "$svnrepo/tags/version 3.6.2"
但似乎,这在这里不起作用:如何使用 reposurgeon 将 svn repo 转换为 git?
如何完全删除它?
当您用于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”相关的提交不再存在。