【问题标题】:It is possible to completely remove a file from my SVN repository?可以从我的 SVN 存储库中完全删除文件吗?
【发布时间】:2009-07-10 18:55:04
【问题描述】:

我在一个我独自工作的项目中使用 tortoise SVN,并且我已经(错误地)向我的存储库(VC++ Intellisense 数据库)提交了一个巨大的文件。现在我想从我的存储库中删除这个文件以方便它的备份。

从我的项目中删除文件并进行提交(显然)并不能解决我的问题,因为该文件的先前版本仍然存在于存储库中。有没有不涉及创建新存储库的方法来解决这个问题?


编辑

@ryansstack 解决方案完美运行,这就是我所做的(我在我的存储库所在的目录中运行了命令):

首先,我创建了一个存储库转储,过滤了那个大文件:

svnadmin dump tcc | svndumpfilter exclude "/trunk/Image Segmentation/Image Segmentation.ncb"  > tcc.bak

然后我创建了一个新的存储库(tcc2)并运行了以下命令:

svnadmin load tcc2 < tcc.bak

现在 tcc2 的转储大小为 7 MB,而 tcc 为 170 MB。

【问题讨论】:

标签: svn version-control tortoisesvn


【解决方案1】:

http://subversion.apache.org/faq.html#removal

你不能,很快,但有办法

【讨论】:

    【解决方案2】:

    我已经研究过做类似的事情,并且从根本上设置了 Subversion,因此您不能简单地删除类似的内容。

    但是既然你已经在备份数据库,你应该check this out。我最终做的是转储我的存储库,对其进行过滤,然后将其加载到新的存储库中。当然,由于其他原因,我已经在进行转储/过滤/加载循环,所以一点额外的过滤并没有增加太多工作。如果你已经在做备份,你可以备份你当前的 repo(我假设你正在做一个转储,或者多个增量转储),使用 svndumpfilter 过滤掉那个特定的版本,然后从备份中重新加载。

    编辑:底格里斯官方对此有一个issue 516。 “svn obliterate”命令已经计划好了,但还没有实现。

    【讨论】:

      【解决方案3】:

      据我所知,一旦在 svn 中提交了文件,svn 中就没有撤消它的功能。您可以从目录中删除该文件并提交该目录,但这只会使该文件不属于该目录的最新版本;已提交的修订版仍在其中。通常我觉得这是一件好事,但当然也有一些情况(比如你的情况)可能不太理想。

      【讨论】:

        【解决方案4】:

        我们遇到了同样的问题。我的 SVN 服务器管理员告诉我这无法完成。唯一可以做到的方法是启动一个新的存储库并将旧存储库存档到磁盘或其他任何地方。

        不要对文件进行任何更改,尤其是。如果它是一个二进制文件,因为我相信SVN会存储它的多个副本。

        【讨论】:

        • SVN 对二进制文件进行比较。
        【解决方案5】:

        无法从 svn 撤消已提交的文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-28
          • 2013-05-28
          相关资源
          最近更新 更多