0

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

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

metaflac --show-md5sum filename.flac

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

怎么可能做这样的事情?

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

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

4

2 回答 2

1

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

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

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

于 2020-01-08T13:09:19.047 回答
1

git-annex是工具。 git-annex最近有点发布了外部后端协议

因此,您可以在 .flac 文件中检查该 md5 哈希,并在对 .flac 文件调用 GENKEY 时将其返回。您还必须弄清楚 md5 摘要是如何计算的,这样您就可以在 VERIFYKEYCONTENT 调用中重现它。

git它本身并不是为处理二进制文件而设计的,也没有考虑到将来允许这样做的可扩展性设计。

是关于该主题的一些额外讨论。这也不是第一个想到将预先计算的 md5 和用于内容寻址的 blob 存储的想法。

于 2020-08-21T16:56:02.530 回答