在Java中有效地获取一个git blob大小



我有一堆对象id指向给定git存储库中的blob。我想获得它们未压缩的内容所占用的字节数,最好使用JGit。也就是说,在工作区中签出后,相应文件将包含的字节数。

这些信息是否存储在git blob本身中?这里简要地讨论了一下,但我不明白blob头文件中的blob大小是否对应于膨胀后的大小,还是其他东西(例如存储增量所需的大小)。

我可以通过JGit访问blob大小:给定FileRepository repository并一次性初始化ObjectLoader reader = repository.newObjectReader(),似乎我可以使用reader.open(objectId).getSize()获得我寻求的大小。但这是缓慢的。通常需要几十毫秒才能得到一个团的大小。如果我理解正确的话,JGit会读取整个blob,至少在某些情况下是这样。(我在这里问了一个类似的问题,但没有得到答复。)

我的问题是:我可以使用JGit更快地获得blob大小吗?或者,我是否可以至少在原则上通过读取blob数据的一部分来实现我想要的,也就是说,这些信息是以直接形式存储在某个地方的,或者是可推导的,或者我绝对需要在知道它的大小之前读取和膨胀整个blob ?

使用ObjectReader#getObjectSize,它将只读取对象的大小,而不是整个对象。

open对象将加载到内存中,这是不必要的。

最新更新