Svn 在版本控件(如Subversion)中存储图像的最佳实践

Svn 在版本控件(如Subversion)中存储图像的最佳实践,svn,version-control,backup,storage,Svn,Version Control,Backup,Storage,我想将图像文件存储在SVN存储库中。我已经读到SVN将尝试将基于增量的更改存储到存储库中,而不仅仅是一个简单的副本。但是,另一种方法是将图像更改为base64并将其存储为文本版本。考虑到创建base64图像的成本,这会更实用还是会让事情变得更糟?Git不使用增量来存储差异,而对于图像文件,这无论如何都是不可能的。这意味着,如果跟踪的图像发生更改,它将以其自身大小的100%增加存储库的大小,并且由于图像已经压缩,因此无法使用git的打包进行压缩 问题是,图像有多大以及它们更改的频率有多高,通过这些

我想将图像文件存储在SVN存储库中。我已经读到SVN将尝试将基于增量的更改存储到存储库中,而不仅仅是一个简单的副本。但是,另一种方法是将图像更改为base64并将其存储为文本版本。考虑到创建base64图像的成本,这会更实用还是会让事情变得更糟?

Git不使用增量来存储差异,而对于图像文件,这无论如何都是不可能的。这意味着,如果跟踪的图像发生更改,它将以其自身大小的100%增加存储库的大小,并且由于图像已经压缩,因此无法使用git的打包进行压缩

问题是,图像有多大以及它们更改的频率有多高,通过这些可以估计存储库的增长速度。然后,您可以参考针对您的用例的存储库大小建议。

Git(也包括Subversion)使用增量在存储库中存储文件。在Git和Subversion中,它们都是处理二进制文件的二进制增量。它们还可以找到匹配的字节运行,并且不依赖任何分隔符,比如新行

subversion会根据文件的先前版本进行增量,Git最初会存储全文,并在
gc
操作期间选择一些可能的候选文件,并选择最相似的文件进行增量。这意味着,当部分或完全恢复更改时,它可以(有时)利用单独的类似文件或旧版本。Git than将deflate压缩应用于全文和增量(Subversion不这样做)

没有其他通用的压缩多版本文件存储的方法。当您需要保留文件的旧版本时,Git是最佳的,或者几乎是最佳的。与专用备份系统相比,唯一的缺点是Git无法删除旧版本


大多数图像都是压缩的,这通常意味着当存在差异时,文件的其他部分也会不同,因此它们不会从增量压缩中获得太多,而被压缩也不会从Git应用的额外压缩中获得太多。但是Git提供了一种机制。在将文件存储在存储库中之前应用“清理”过滤器,签出文件时应用“涂抹”过滤器。对于PNG文件,您可以使用它们重写文件,而无需压缩。如果它们实际上包含在不同版本中相同的大部分,那么增量压缩将利用它们,压缩将在以后由git应用(使用相同的算法),因此不会丢失任何东西。在实践中,我怀疑只有当你有很多图片并且它们的大部分实际上是相同的时候,才值得麻烦。也适用于其他压缩格式,如OpenOffice文档。

Git不使用增量存储差异,对于图像文件,这无论如何都是不可能的。这些图片是希望经常更改还是添加后会保持不变?@Ozan你确定吗?我几乎肯定Git只存储文本文件的更改。否则linux的代码就不会是5GB。至于你的问题,图像可能会经常变化。他们来自一些我想追踪的网站。我删除了我的答案,因为我刚从Ozan的评论中学到了一些东西。关于git如何存储文件。我仍然认为base64编码并不是很有用:)好的。所以我对Git的看法是错误的。我应该换成SVN。感谢您的帮助。使用包文件可以减少git存储库的大小,其中确实包括使用Delta:但是它对图像文件没有帮助。OK。我得到了答案。只有一件事:如果文件没有更改,SVN将不会再次提交它(就像源代码一样),对吗?在这种情况下,将它们保存在存储库中比存储一个简单的副本要好。如果文件没有更改,则不会再次提交,每个版本控制系统都是如此。我不想阻止您使用git,我只是想让您知道,随着二进制文件的频繁更改,存储库的大小将快速增长。SVN也会出现这种情况,它不在二进制文件上使用增量压缩。非常感谢。我应该重新考虑我的策略-1:错。Git确实使用Delta,并且它们可以处理二进制文件。压缩流不会从增量中获得太多好处,但可以使用污迹和干净过滤器重写图像,而无需压缩存储(git将自行应用deflate)。不过我不确定这是否真的值得麻烦。谢谢。好啊现在我很困惑。我已经用Git实现了我的程序,自从Ozan说Git不使用Delta之后,我就准备切换到SVN。你有任何官方链接可以证明你在这里提到的吗?我真的不知道哪一个是真的。对不起。@AlirezaNoori:有!。它非常详细地解释了内部存储。@AlirezaNoori:我已经大致了解了算法是如何随着时间的推移工作的,但我似乎找不到任何合理的描述。您可以通过查看(低级)和(查找
pack.*
选项)了解一些内容。谢谢。我会详细调查的。但这似乎更准确。