簡體   English   中英

在git源倉庫中,我可以僅使用Git提交樹的元數據來獲取文件名及其大小的列表嗎?

[英]In a git source repo can I get the list of file names and their sizes with just metadata of the Git commit tree?

我想在git存儲庫中列出一些特定提交的文件名及其大小。

Git是否將此數據與git blob對象一起存儲在提交樹中?

簡短的回答是“不,但您不需要(不需要)。”

對象具有路徑名組件,而不是通向該組件的目錄路徑,這是由最初為了到達樹對象而積累的一系列路徑組件所隱含的;還有一個blob哈希,但沒有blob對象的大小。 Blob對象的大小在對象本身的前幾個字節中,因為所有對象均以以< typename ,空格, ASCII大小 ,NUL>形式的零終止字節字符串開頭進行編碼。

但是,如果您到現在為止都可以閱讀這些東西,這就是說,您的源代碼可以提取足夠的提交對象來定位樹對象並提取它們,從而讀取樹和Blob ID和路徑。名稱-然后,您還擁有從blob讀取size標頭所需的一切。 如果您有足夠的數據來從存儲庫中讀取樹和blob對象,那么您將擁有整個存儲庫,至少要達到有趣的深度(您可能有一個淺表克隆,但其深度至少足以找到用於查找樹的提交和斑點)。 這意味着您可以通過遍歷樹對象找到路徑名,也可以通過讀取blob標頭找到blob大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM