2

我试图清理 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?

如何完全删除它?

4

1 回答 1

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”相关的提交不再存在。

于 2014-03-28T07:58:45.020 回答