首页 > 解决方案 > 基于文件扩展名的备用散列函数

问题描述

只要关联的播放列表,我想使用 git 来跟踪媒体文件。跟踪播放列表很容易,因为这些是文本文件。关于二进制文件,我已经看过 git-lfs 和 git-annex,但想探索以下方式:

Flac 文件提供内部 md5 哈希。这样的哈希可以通过

metaflac --show-md5sum filename.flac

考虑到性能,我想要求 git 使用“flac md5 hash”,而不是 git 内部哈希。

怎么可能做这样的事情?

我已经阅读了 gitattributes 文档,但没有找到答案。

PS:第一个目标是获得闪电般的快速性能。第二个目标是忽略对文件的任何元数据更改。

标签: gitgit-lfsgit-annex

解决方案


无法使用自定义散列函数来识别 Git 中的对象。切换到 SHA-256 的工作正在进行,但它不是用于替换您自己的哈希函数的通用框架。

Git 中的 CPU 使用率不受散列控制;它以压缩为主。使用不同的散列函数,即使可能,也不会产生显着的性能优势。(我自己计算了这些数字,其他 Git 贡献者也是如此。)

此外,MD5 非常弱(甚至比 SHA-1 还弱),现在不应该用于任何目的。如果您需要快速哈希,BLAKE2b 比 MD5 更快,实际上是安全的,并且可以调整为任意长度。


推荐阅读