如何从本地 SVN 存储库删除数据?

如何从本地 SVN 存储库删除数据?

我无意中使用 TortoiseSVN 的“添加文件夹”选项提交了一大堆二进制文件,而我本应该使用简单的“创建文件夹”。我不想在 SVN 中保存这些二进制文件,因为它们占用了我的硬盘上的大量空间,而且无论如何也不会从版本控制中受益。但是,我不确定如何最好地恢复这种混乱,以便真正释放提交所有这些二进制文件所使用的内存。我可以轻松删除所有文件并提交,但我不确定这是否会真正从 SVN 中删除它们的相关数据,尤其是从添加它们的修订版中删除。

我查看了 SVN 存储库目录,发现了一个巨大的文件“db/revs/67”,我猜想它代表了第 67 个修订版本的数据,这些文件就是在这个修订版本中添加的。我可以直接删除该文件吗?还是说这会给 SVN 带来问题?看来我需要删除或修改其他地方的文件,这样 SVN 才能像这些修订版本从未存在过一样?

答案1

要安全地从 SVN 历史记录中完全删除修订,您需要导出已删除修订的存储库,然后从转储文件中恢复它。为此,请在终端或 Windows 命令提示符上运行以下命令:

svnadmin dump /path/to/repo -r1:66 > svn.dump
ren /path/to/repo /path/to/backup
svnadmin create /path/to/repo
svnadmin load /path/to/repo < svn.dump

(在 *nix 系统上,替换renmv.)

一旦您确定新存储库中一切正常,您就可以删除备份。

考虑使用该svn:ignore属性来防止将来将这些文件提交到存储库。您可以使用 TortoiseSVN 将文件添加到忽略列表中,方法是右键单击它们,转到TortoiseSVN并选择添加到忽略列表

相关内容