git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Problem: `fatal: too-short tree object` when executing hash-object on tree

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 31, 2023, 17:25 UTC
Message-ID
<xmqqjztbw2cf.fsf@gitster.g>
In-Reply-To
<0de414f8-f409-467f-a504-06a78f088981@app.fastmail.com>
"Gareth Hayes" <gareth.hayes@bitcoin.org.hk> writes:
Show 10 quoted lines
> 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.
Previous: Johannes Sixt
Message 3 of 3 in “Problem: `fatal: too-short tree object` when executing hash-object on tree”
  1. Gareth HayesAug 31, 2023
  2. Johannes SixtAug 31, 2023
  3. Junio C HamanoAug 31, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.