在git源代码中,我可以使用Git提交树的元数据获取文件名列表及其大小吗?

时间:2016-08-25 09:06:42

标签: git blob git-commit

我想在git存储库中列出文件名及其大小,以便进行一些特定的提交。

p是否将此数据与提交树中的p对象一起存储?

1 个答案:

答案 0 :(得分:0)

简短的回答是"不,但你不需要(需要)照顾。"

对象具有路径名组件 - 而不是通向组件的目录路径,因为为了首先到达树对象而累积的一系列路径组件所暗示的 - 和blob哈希,但不是blob对象的大小。 blob对象的大小位于对象本身的前几个字节中,因为所有对象都是以< typename 形式的零终止字节字符串开头编码的, space, ASCII-fied size ,NUL&gt ;.

但是,如果您可以阅读这些内容中的任何一个 - 通过这个,我的意思是,如果您有源代码可以提取足够的提交对象来定位树对象并提取它们以便读取树和blob ID和路径名 - 然后您就拥有了从blob读取大小标题所需的一切。如果你有足够的数据来从存储库中读取树和blob对象,那么你拥有整个存储库,至少是有趣的深度(你可能有一个浅层克隆,但它至少足够深,可以找到提交找到树木和斑点)。这意味着您可以通过遍历树对象和blob大小来查找路径名,方法是读取blob标题。