2009-01-27 40 views
7

我需要在版本下保留一些大文件(某些Gig)。是否有允许您永久删除文件的版本控制系统?

我不需要,我不能在版本下保留所有版本的文件。 我希望能够在某个时刻从我的VCS大文件版本中删除。

我想保留在版本控制下的文件是大的.zip文件或ISO映像。 这些文件可能包含可执行软件或数据(地震数据,SAR图像,GNSS数据),它们由我公司的软件供应商提供。

我可以使用什么控制版本系统?

+0

问题文本应改为:“是否有允许您永久删除文件的版本控制系统?” – 2009-01-27 11:56:34

+0

@Nick Pierpoint:标题根据您的建议修改。 – 2009-01-27 13:26:33

+0

如果您告诉我们更多关于这些文件的信息,可能会帮助我们给出更好的答案:文本或二进制文件?他们如何获得或生成(显然不是通过键入)?他们是什么? – 2009-01-27 13:53:22

回答

4

我不认为有任何版本控制系统,可以让你经常这样做,因为这违背了所有版本控制系统所代表的。

+0

我不知道。有时你犯错误。你可能会无意中检入一个你不再想要的巨大二进制文件。它可能会使你的回购的规模增加一倍,你不再需要它。 – 2009-01-27 11:55:14

+0

这就是我所说的“定期”。当然,几乎所有的系统都允许您以某种方式从存储库中删除文件,但这决不是由VCS鼓励的日常操作。 – Bombe 2009-01-27 12:05:49

8

在CVS中,您可以通过从回购库中删除文件来完成此操作。 Subversion允许通过转储回购的内容并过滤它来删除文件(这有点麻烦)。 Perforce有一个obliterate命令。许多较新的分布式VCS通过在各个地方使用哈希使其相当困难,而且您的回购可能已在其他地方复制,这也使事情变得复杂。 Hg有一个strip命令(Mq扩展的一部分),Git也可以这样做。

1

许多版本控制系统允许您以某种方式配置它们,以便它们仅存储多个版本的文件之间的差异并通过它们节省空间。

例如,如果您提交了1Gig文件,请更改其中的一部分并重新提交,只有更改的部分将存储在版本控制系统中。
将不会使用2Gigs(初始文件和新文件),但只有1Gig + sizeOfChanges。

存在一个缺点:如果您存储的文件将其整个内容从修订版本更改为修订版本,则这种更改可能会适得其反,因为这些更改与原始版本几乎具有相同的空间。档案文件就是这样的文件的一个例子,其中只有(实际)内容中的小改变可导致档案文件的完全改变的内容。

我建议您自己测试几个版本控制系统,并根据您的特定需求和环境进行测试,并在服务器端监控每个系统对每个系统的存储需求的变化。

1

一些分布式版本控制系统允许创建“检查点”,允许您使用此版本作为基本版本的一种,并且可以避免在每次检出时在检查点之前提取所有历史记录。因此,您可以删除大文件,创建检查点,并将检查点中的存储库检出/克隆到新目录。然后你有一个新的,小的存储库,但没有检查点之前的历史。它不需要这个历史记录就可以刻录CD上的旧版本库,并且从现在开始使用新的版本库。

我只测试它在darcs,它有效,但YMMV取决于版本控制系统和用例。

3

TFS有一个销毁命令,您可以使用它来根据需要永久删除文件或修订版本。

有这个MSDN article更多信息。

4

Perforce通常允许以两种方式放置文件,因为只有头版本(所以,你只能每个都有一个副本)或所有修订。 Perforce确实有可以用来删除修订版的管理员级别删除命令。它由您决定查询文件列表,可能按日期或修订数量来查询,并指定对obliterate命令的修订。顾名思义,删除操作会从数据库中永久删除修订版,因此,我总是生成脚本来执行此操作并在运行之前对其进行检查。如果obliterate命令不与-Y标志一起运行,它将生成一个将被删除的列表,也非常有用。

4

不知何故,我觉得你根本不应该使用版本控制系统。如前所述,你想要做的事情违背了你首先需要版本控制系统的一切。

我建议你创建一个文件系统目录结构,这对你想要完成的内容有意义,以便你可以构造你的数据。只需对这些文件进行备份即可。

1

这听起来像你需要一个智能备份系统,而不是版本控制。

我使用SyncBackSE;它允许您保留许多以前的版本,并且还可以执行诸如“忽略30天前更改的所有文件”之类的内容。

这是我使用的少数付费软件之一。我认为这值得检查。

1

我想你说的是“AlienBrain”“bucket”系统,不是吗?能够从版本控制中删除一些修订。 如果你想销毁一件物品,它通常被称为“消除”,并且它被许多系统支持。 桶,据我所知是由支持:

0

我会保存这些文件下一个唯一的名称(已盖销,也许是),或许还让文本参考版本控制系统中的外部文件。

0

Fossil允许你通过“顺”机制来做到这一点。化石是一个分布式SCM,但是,这意味着这不会影响所有存储库(原因很明显)。

相关问题