基于文件扩展名的替代哈希函数
Alternate hashing function based on file extension
我想使用 git 来跟踪与播放列表相关的媒体文件。
跟踪播放列表很容易,因为这些是文本文件。
关于二进制文件,我已经看过 git-lfs 和 git-annex,但想探索以下方式:
Flac 文件提供内部 md5 哈希。可以通过
访问此类哈希
metaflac --show-md5sum filename.flac
考虑到性能,我想请 git 使用 "flac md5 hash",而不是 git 内部哈希。
怎么可能做这种事?
我已阅读 git 属性文档,但没有找到答案。
PS:第一个目标是获得闪电般的快速性能。第二个目标是忽略对文件的任何元数据更改。
无法使用自定义哈希函数来识别 Git 中的对象。切换到 SHA-256 的工作正在进行中,但它不是用于替换您自己的哈希函数的通用框架。
CPU 在 Git 中的用法不受哈希支配;它以压缩为主。使用不同的散列函数,即使可能,也不会产生显着的性能优势。 (我自己有 运行 个数字,其他 Git 个贡献者也有。)
此外,MD5 非常弱(甚至比 SHA-1 还弱),现在不应该用于任何目的。如果你需要一个快速的散列,BLAKE2b比MD5更快,实际上是安全的,并且可以调整到任意长度。
git-annex
就是为此的工具。
git-annex
最近发布了 external backend protocol.
因此,您可以检查 .flac 文件中的 md5 散列,并且只要在 .flac 文件上调用 GENKEY 时就 return 它。您还必须弄清楚 md5 摘要是如何计算的,以便您能够在 VERIFYKEYCONTENT 调用中重现它。
git
本身并不是为处理二进制文件而设计的,也没有考虑到将来允许这样做的可扩展性设计。
Here 是关于该主题的一些额外讨论。
这也不是第一个有人想到使用 pre-computed md5 sums 作为 content-addressed blob-storage.
我想使用 git 来跟踪与播放列表相关的媒体文件。 跟踪播放列表很容易,因为这些是文本文件。 关于二进制文件,我已经看过 git-lfs 和 git-annex,但想探索以下方式:
Flac 文件提供内部 md5 哈希。可以通过
访问此类哈希metaflac --show-md5sum filename.flac
考虑到性能,我想请 git 使用 "flac md5 hash",而不是 git 内部哈希。
怎么可能做这种事?
我已阅读 git 属性文档,但没有找到答案。
PS:第一个目标是获得闪电般的快速性能。第二个目标是忽略对文件的任何元数据更改。
无法使用自定义哈希函数来识别 Git 中的对象。切换到 SHA-256 的工作正在进行中,但它不是用于替换您自己的哈希函数的通用框架。
CPU 在 Git 中的用法不受哈希支配;它以压缩为主。使用不同的散列函数,即使可能,也不会产生显着的性能优势。 (我自己有 运行 个数字,其他 Git 个贡献者也有。)
此外,MD5 非常弱(甚至比 SHA-1 还弱),现在不应该用于任何目的。如果你需要一个快速的散列,BLAKE2b比MD5更快,实际上是安全的,并且可以调整到任意长度。
git-annex
就是为此的工具。
git-annex
最近发布了 external backend protocol.
因此,您可以检查 .flac 文件中的 md5 散列,并且只要在 .flac 文件上调用 GENKEY 时就 return 它。您还必须弄清楚 md5 摘要是如何计算的,以便您能够在 VERIFYKEYCONTENT 调用中重现它。
git
本身并不是为处理二进制文件而设计的,也没有考虑到将来允许这样做的可扩展性设计。
Here 是关于该主题的一些额外讨论。 这也不是第一个有人想到使用 pre-computed md5 sums 作为 content-addressed blob-storage.