如何完全删除包含空格的SVN标签?

时间:2014-03-28 06:44:07

标签: git svn naming-conventions whitespace reposurgeon

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

如何完全删除它?

1 个答案:

答案 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工具:

  1. 使用svnadmin dump /var/svn-repos/$PROJECT > /tmp/$PROJECT.dump
  2. 转储存储库
  3. 使用svndumpfilter

    过滤存储库历史记录

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

  4. 查看filterlog.txt以确保历史记录过滤已按预期完成。

  5. 使用svnadmin create命令创建新的空存储库。

  6. 使用svnadmin load命令将筛选的转储装载到新的存储库。存储库将具有整个历史记录,但不再存在与“tags / version 3.6.2”相关的提交。