View Issue Details

IDProjectCategoryView StatusLast Update
0000169fileGeneralpublic2020-08-09 16:36
Reportercolejohnson66 Assigned Tochristos  
PrioritylowSeverityminorReproducibilityalways
Status feedbackResolutionopen 
PlatformLinuxOSArchOS VersionRolling (200627)
Product Version5.39 
Summary0000169: Uncompressed Git Objects Detected as "zlib compressed data"
DescriptionInside `.git/objects`, some files are compressed and others aren't. The uncompressed ones are identifiable by the string "blob " (62 6c 6f 62 20 in big endian) at offset 0x7 followed by (in decimal?) the size of the blob. These uncompressed ones are mistakenly identified as "zlib compressed data"
Steps To ReproduceOpen a folder containing a .git folder and run:

find .git/objects -type f -print0 | xargs -0 -I {} xxd '{}' | grep 'blob'

If anything prints, there is an uncompressed blob stored inside Git. Afterwards, run:

find .git/objects -type f -print0 | xargs -0 -I {} file '{}'

Notice how every file printed (with the exception of the `.pack` and `.idx` files) says "zlib compressed data".
Tagsmagic

Activities

colejohnson66

2020-06-28 21:15

reporter   ~0003431

A better command to list uncompressed objects is:

find .git/objects -type f -print0 | xargs -0 -I {} sh -c "printf '{}: ' && xxd '{}'" | grep "blob "

This will list the file name along with the hex dump. I've noticed that (on my repositories) that most are PNG files I've committed. I assume they're stored uncompressed as the pixel data is already compressed (rendering (a second) compression useless)

christos

2020-07-04 23:32

manager   ~0003435

can you attach a couple of those blob files here?

Issue History

Date Modified Username Field Change
2020-06-27 16:25 colejohnson66 New Issue
2020-06-27 16:25 colejohnson66 Tag Attached: magic
2020-06-28 21:15 colejohnson66 Note Added: 0003431
2020-07-04 23:32 christos Note Added: 0003435
2020-08-09 16:35 christos Assigned To => christos
2020-08-09 16:35 christos Status new => assigned
2020-08-09 16:36 christos Status assigned => feedback