* Problem: `fatal: too-short tree object` when executing hash-object on tree
@ 2023-08-31 10:58 Gareth Hayes
2023-08-31 17:10 ` Johannes Sixt
2023-08-31 17:25 ` Junio C Hamano
0 siblings, 2 replies; 3+ messages in thread
From: Gareth Hayes @ 2023-08-31 10:58 UTC (permalink / raw)
To: git
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`
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?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Problem: `fatal: too-short tree object` when executing hash-object on tree
2023-08-31 10:58 Problem: `fatal: too-short tree object` when executing hash-object on tree Gareth Hayes
@ 2023-08-31 17:10 ` Johannes Sixt
2023-08-31 17:25 ` Junio C Hamano
1 sibling, 0 replies; 3+ messages in thread
From: Johannes Sixt @ 2023-08-31 17:10 UTC (permalink / raw)
To: Gareth Hayes; +Cc: git
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!?
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Problem: `fatal: too-short tree object` when executing hash-object on tree
2023-08-31 10:58 Problem: `fatal: too-short tree object` when executing hash-object on tree Gareth Hayes
2023-08-31 17:10 ` Johannes Sixt
@ 2023-08-31 17:25 ` Junio C Hamano
1 sibling, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2023-08-31 17:25 UTC (permalink / raw)
To: Gareth Hayes; +Cc: git
"Gareth Hayes" <gareth.hayes@bitcoin.org.hk> writes:
> 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`
>
> 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?
It would work *ONLY* for blob, and not commit or tag object types,
no?
The "-p" option is to present the object in a human-friendly format,
as opposed to giving the raw stream of bytes that is suitable for
machine consumption and required by hash-object. It so happens that
for "blob", the raw stream of bytes is just as human-friendly as the
tool can make, without having a deep knowledge of the content type
(e.g. it may be possible to make "cat-file -p <blob>" to somehow
apply an appropriate textconv filter if the path to <blob> is known
as a future enhancement, but such a code does not exist yet, and
when it happens, even "cat-file -p <blob> | hash-object --stdin"
would not round-trip).
So, that is what you are doing wrong, I think.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-08-31 17:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-31 10:58 Problem: `fatal: too-short tree object` when executing hash-object on tree Gareth Hayes
2023-08-31 17:10 ` Johannes Sixt
2023-08-31 17:25 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).