nop*_*ole 10 svn git mercurial dvcs
在我们的项目文件中,如果有二进制文件,如.doc,.xls,.jpg,我们选择不保留过去的版本(只保留最新版本没问题),有没有办法告诉SVN,Git ,或Mercurial或其他工具,以跳过这些文件或特定文件夹的修订?
比如,有一个4MB的.doc文件,我需要检查数百次,但我真的不太关心它过去的版本.因此,如果系统保留了100个修订版,那已经是400MB ...检查300次意味着1个文件的1.2GB,这并不好.只有最新版本是好的,所以每个人都可以同步它.此外,我不希望其他人检查项目,并且必须检查20GB的东西.(Git和Mercurial会在每个人的本地存储库中保留所有修订版吗?)
ang*_*son 17
请注意,这不是一个答案.
如果我放弃围绕不为后代保留文件的正确版本的讨论,我将至少评论你的问题的一部分,这可能会让你重新考虑不保留文件库中的所有文件修订版.
版本控制系统通常不会在每个新版本上存储整个文件,它们会存储更改.根据系统的不同,您可能偶尔会获得该文件的完整副本,但大多数更改集仅会更改.
例如,在Mercurial中,我试过这个:首先我从这个URL下载了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#with VB和保存.然后我用单字母评论提交了新版本.提交后存储库的大小现在为3.497.984字节.差异是512KB(存储库中涉及一些分块,因此大小是精确的512KB值.)
如果我现在再次打开文件,只将标题页VB更改回C#,保存并再次提交,存储库的大小增加276KB,最多为3.780.608字节.
如您所见,更改不提交文件的整个副本,但是授予,差异也不在"10KB"范围内.
让我们假设每个差异的平均大小(仅此文件)将介于两者之间,即两个值之间的平均值为50%.这意味着对此文件的300次提交更改,平均394KB总计115MB.这不是很多
我的建议如下:
我确实知道有人这样做,但你不会喜欢这个答案。
它的视觉源安全。检查文件上的“仅存储最新版本”标志,它会停止保留历史记录。
如果您希望使用像样的 SCM 来实现此功能,我建议根本不要将文件放入 SCM 中,而是将其存储在其他地方,例如文档管理解决方案,甚至只是文件系统共享。