2009-07-10 83 views
11

我正在使用乌龟SVN来处理一个项目,我一个人工作,并且犯了一个巨大的文件(一个VC++智能感知数据库)。现在我想从我的存储库中删除此文件以便于其备份。从我的SVN存储库中完全删除文件是可能的吗?

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


编辑

的@ryansstack解决方案完美地工作,这是我做了什么(我跑在我的仓库位于该目录中的命令):

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

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

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

svnadmin load tcc2 < tcc.bak 

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

+0

Dupe http:// stackoverflow。com/questions/663584/subversion-permanent-remove-incorrectly-checked-directory-project/663595#663595 http://stackoverflow.com/questions/560684/svn-obliterate – 2009-07-10 19:19:14

回答

2

据我所知,一旦在svn中提交了一个文件,svn中就没有用于撤销该文件的功能。您可以从目录中删除文件并提交目录,但这只会使文件不成为目录最新版本的一部分;承诺的版本仍然存在。通常我会发现这是件好事,但当然有些情况(如你的)可能不太理想。

-1

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

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

+0

SVN做二进制文件的差异。 – 2009-07-23 12:26:22

2

我已经看过做类似的事情,并从根本上设置了Subversion,以便您不能简单地删除这样的东西。

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

编辑:底格里斯河官方对此有一个issue 516。 “svn obliterate”命令是计划中的,但尚未实现。

-1

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

相关问题