Py学习  »  Git

计算git存储库之外的文件或目录的git哈希

donquixote • 3 年前 • 1417 次点击  

问题

是否有可能在任何git存储库之外独立地计算文件或目录的git哈希?

动机

我想使用这种方法来识别生成的工件(例如,从sass生成的css)中的差异。

使用git这样做的好处是,可以将散列与git历史中现有的文件散列进行比较,看看它们是否熟悉。

出身背景

在里面 How to compute the git hash-object of a directory? 我们将学习如何计算目录的git哈希。此方法仅在目录位于git存储库中时有效。

git ls-files -s somedirectory | git hash-object --stdin

根据我对git的理解,文件或目录的git哈希取决于 只有 在文件或目录内容上,可能是文件perms,但不在存储库中的任何内容上。

已知方法

是的,我们可以暂时建立回购协议,但为什么要采取额外的步骤呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132554
 
1417 次点击  
文章 [ 1 ]  |  最新文章 3 年前
torek
Reply   •   1 楼
torek    3 年前

Files are easy; directories are hard. 阅读目录的Python代码;但文件只是文件内容的校验和(现在是SHA-1,将来是SHA-256),前面有一个blob头,其中包括blob的大小(十进制ASCII码),再加上一个字节将头与数据分开。也就是说,对于一个12字节的文件,我们有 blob 12\0hello world\n 作为输入 sha1sum 或者无论您的本地命令或计算SHA-1校验和的方法是什么。

(你也可以简单地使用 git hash-object ,用于普通文件。目录仍然很难找到。)