Re: [RFC/PATCH 0/6] hash-object: use fsck to check objects
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Jan 18, 2023, 21:38 UTC
- Message-ID
- <Y8hm4KKVwguGGrdn@nand.local>
- In-Reply-To
- <xmqqmt6f4l03.fsf@gitster.g>
On Wed, Jan 18, 2023 at 12:59:24PM -0800, Junio C Hamano wrote:
Show 7 quoted lines
> The --literally option was invented initially primarily to allow a > bogus type of object (e.g. "hash-object -t xyzzy --literally") but I > am happy to see that we are finding different uses. I wonder if > these objects of known types but with syntactically bad contents can > be "repack"ed from loose into packed? > > > [5/6]: fsck: provide a function to fsck buffer without object struct
It is indeed possible:
--- >8 --- Initialized empty Git repository in /home/ttaylorr/src/git/t/trash directory.t9999-test/.git/ expecting success of 9999.1 'repacking corrupt loose object into packed': name=$(echo $ZERO_OID | sed -e "s/00/Q/g") && printf "100644 fooQ$name" | q_to_nul | git hash-object -w --stdin -t tree >in &&
git pack-objects .git/objects/pack/pack <in
Enumerating objects: 1, done. Counting objects: 100% (1/1), done. 06146c77fd19c096858d6459d602be0fdf10891b Writing objects: 100% (1/1), done. Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 ok 1 - repacking corrupt loose object into packed --- 8< ---
Thanks, Taylor