gpt4 book ai didi

svn - 任何版本控制系统(如 SVN、Git 或 Mercurial)是否允许您使用 "keep latest version"而不是修订版本? (例如二进制文件)

转载 作者:IT王子 更新时间:2023-10-29 00:56:52 29 4
gpt4 key购买 nike

在我们的项目文件中,如果有二进制文件,比如.doc、.xls、.jpg,而我们选择不保留他们过去的版本(只保留最新版本就可以),有没有办法告诉SVN、Git 或 Mercurial 或其他一些工具来跳过对这些文件或特定文件夹的修订?

比如说,有一个 4MB 的 .doc 文件,我需要检查数百次,但我不太关心它过去的版本。因此,如果系统对其进行 100 次修订,那已经是 400MB 了…… checkin 300 次意味着 1 个文件需要 1.2GB,这并不好。只有最新版本才是好的,这样每个人都可以同步到它。此外,我不希望其他人 checkout 该项目并且必须 checkout 20GB 的内容。 (Git 和 Mercurial 会在每个人的本地存储库中保留所有修订吗?)

最佳答案

请注意,这不是一个完整的答案。

如果我放弃关于不为后代保留文件的正确版本的讨论,我至少会评论你问题的一部分,这可能会让你重新考虑不在存储库中保留文件的所有修订。

版本控制系统通常不会在每个新修订版上存储整个文件,它们存储更改。根据系统的不同,您有时可能会拥有文件的完整副本,但大多数变更集只是变更。

例如,在 Mercurial 中,我尝试这样做:首先,我从以下网址下载了 C# 3.0 语言规范作为 word 文件:http://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/CSharp%20Language%20Specification.doc

然后我将其提交到一个新的 Mercurial 存储库。提交前的大小(空存储库)为 80 字节,磁盘上文件的大小为 2.387.968 字节,提交后的存储库为 2.973.696 字节。请注意,该文件现在有效地存储了两次,一次在我的工作副本中(我可以编辑的那个),一次在我的存储库中作为我初始提交的一部分。

然后我打开文件,并将 3.0 的所有出现更改为 4.0(不带引号),并将 C# 的所有出现更改为VB,并保存。然后我用一个单字母的注释提交了新版本。提交后存储库的大小现在为 3.497.984 字节。差异是 512KB(存储库中涉及一些分 block ,因此大小是精确的 512KB 值。)

如果我现在再次打开文件,仅将标题页 VB 更改回 C#,保存并再次提交,存储库的大小将增加 276KB,达到 3.780.608 字节。

如您所见,更改不会提交文件的完整副本,但当然,差异也不在“10KB”范围内。

让我们假设每个差异的平均大小,仅针对此文件,将介于两者之间,假设两个值之间的平均值为 50%。这意味着对该文件进行了 300 次更改提交,平均 394KB 总计 115MB。 这不是很多

我的建议如下:

  • 别再小气了,磁盘空间很便宜,相比之下当有人说“我真的希望我上周知道那个文件在你损坏它之前是什么样子”时你会感到头疼。<

关于svn - 任何版本控制系统(如 SVN、Git 或 Mercurial)是否允许您使用 "keep latest version"而不是修订版本? (例如二进制文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037664/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com