svn - 从 svn 存储库中删除包含所有历史记录的文件

标签 svn repository version-control

有没有办法从 svn 存储库中删除文件,包括其所有历史记录?当我想摆脱驻留在 repo 中的大型二进制文件时,就会出现这个问题。

在这种情况下,我只知道一种方法可能会有所帮助:

  • svnadmin 的帮助下转储所有 repo公用事业。
  • 使用 grep 过滤转储文件. Grep 应该使用文件名并写入另一个转储文件
  • 使用 svnadmin 导入最后一个转储文件

  • 但这太复杂了,也不可靠。也许还有另一种解决方案?

    最佳答案

    最近使用命令 svndumpfilter 变得更加简单。 .详细信息可在 subversion 文档 here 中找到.基本上,为了避免冲突(解释为 here ),它需要一个 repo 转储并重做每个提交,包括或排除给定的文件前缀。基本语法:

    svndumpfilter exclude yourfileprefix < yourdump > yournewdump
    

    排除可能是提问者正在寻找的内容,但您也可以使用 include 来提取存储库的子树,以便将其作为自己的存储库分拆出来。

    subversion (very meta) 中 subversion 的最新版本也可以采用 glob 模式。我最近不得不从 repo 中删除所有 pdfs,它很容易完成,如下所示:
    svndumpfilter exclude --pattern '*.pdf' < dump > dump_nopdfs
    

    可以通过调用 svndumpfilter help 找到更多使用信息和 svndumpfilter help exclude .

    关于svn - 从 svn 存储库中删除包含所有历史记录的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2050475/

    相关文章:

    svn - checkout 时如何摆脱 TortoiseSVN 1.8.1 中的错误 "' folder_name' not valid as filename in directory"?

    svn - 撤消用乌龟svn解决?

    php - 在 PHP 页面中嵌入 svn 修订号的简单方法?

    git - 如何重命名带有子模块的 git 存储库?

    perl - 如何使用 yum 在 CentOS 上安装 perl(Unix::Syslog)?

    mercurial - 是否可以从 Mercurial (HG) 存储库中 checkout 单个目录?

    svn - 适当的SVN使用分支和主干

    mysql - ATG 连接线程

    windows - 2GB USB 驱动器上的版本控制

    svn - 如何设置一个简单的 SVN 服务器?