Re: Problem: `fatal: too-short tree object` when executing hash-object on tree
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Aug 31, 2023, 17:10 UTC
- Message-ID
- <defa2a66-598e-4721-a644-680de0116dec@kdbg.org>
- In-Reply-To
- <0de414f8-f409-467f-a504-06a78f088981@app.fastmail.com>
Am 31.08.23 um 12:58 schrieb Gareth Hayes:
> Problem: I'm trying to reproduce the identifier of a tree object using `git cat-file -p <tree object identifier> | git hash-object -t tree --stdin`
XY-problem alert!?
Show 8 quoted lines
> This results in an error: > `fatal: too-short tree object` > > To replicate: > `git cat-file -p HEAD` > `git cat-file -p <tree object identifier from output of above> | git hash-object -t tree --stdin` > > This works for other object types but not trees. What am I doing wrong?
Recall that the -p in cat-file means "pretty" (-print). The data that makes up a tree object is far from pretty, hence, you can't feed it into git hash-object directly.
You can either turn the pretty-printed input into a tree object
git cat-file -p $treeoid | git mktree
or hash the raw data
git cat-file tree $treeoid | git hash-object -t tree --stdin
-- Hannes