我有兴趣在 git 中存储一个固定大小的 EEPROM HEX 文件。这些文件永远不会改变大小,但它们会经常改变内容。
如果我将一个 EEPROM 文件添加到 git 并提交它,然后我更改文件中的几个字节,git 会在数十或数百次提交中有效地存储此更改吗?
在我对这个问题的研究中,我对这个主题进行了一些彻底的讨论,但其中大多数似乎处理的是 PDF 和 MP3 之类的文件,没有人希望这些文件保持不变或在差异中具有可比性。我想知道 EEPROM HEX 文件是否会因为文件大小保持不变而被区别对待?
编辑(再次)
一些初步观察......(感谢 Krumelur 的“尝试一下”的鼓励!)
我正在测试的文件是一个 7MB 的 Intel HEX 文件。根据 git 的输出,它似乎将此文件视为文本文件:
$ git commit -m "Changed a single byte."
[master bc2958b] Changed a single byte.
1 file changed, 1 insertion(+), 1 deletion(-)
Run Code Online (Sandbox Code Playgroud)
diff 输出也匹配:
$ git show bc2958b
commit bc2958b[...]
Author: ThoughtProcess <blah@blah.com>
Date: Wed Jul 31 11:53:41 2013 -0500
Changed a single byte.
diff --git a/test.hex b/test.hex
index fbdeed4..04d19b6 100644
--- a/test.hex
+++ b/test.hex
@@ -58,7 +58,7 @@
:20470000000000000000000000000000000000000000000000000000E001EDD0D9310D00E4
:20472000400200000080000000000000000000000000000000000000E002EDD0CF310D000B
:20474000400200000080000000000000000000000000000000000000E0036D0063040D00D3
-:2047600040020000008000000000000000000000000000000000000000A0FF2F06801B0FF9
+:2047600040020000008000000000000000000000000000000000000000A0FF2G06801B0FF9
:2047800000E01D007A00820F3CFB000000000000000000000000000000A0FF8F06801B1FEC
:2047A00000E01D006A00821F3CFB000000000000000000000000000000A0FF6F06801B8F7C
:2047C00000E01D005A00821F3CFB000000000000000000000000000000A0FF8F06801BDFFC
Run Code Online (Sandbox Code Playgroud)
7 次提交后,存储库大小现在为 21MB。奇怪的是,我注意到存储库似乎随着每次提交而大致线性增长(2MB)。这就是 git 设计的工作方式吗?或者它没有像我期望的那样将增量差异存储为文本?
git 实际上是在某个地方存储了文件的新完整副本,.git/objects因此您的存储库确实会线性增长。您可以运行git gcgit 打包存储库。对于您的数据,git 应该能够真正有效地打包,并且您的存储库应该变得更小。(gitgit gc偶尔也会自动运行。)
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |