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

Re: Getting a commit sha1 from fast-import in a remote-helper

From
Mike Hommey <mh@glandium.org>
Date
Nov 18, 2014, 02:31 UTC
Message-ID
<20141118023112.GA14034@glandium.org>
In-Reply-To
<20141118014028.GF4336@google.com>
On Mon, Nov 17, 2014 at 05:40:28PM -0800, Jonathan Nieder wrote:
Show 19 quoted lines
> Mike Hommey wrote:
> 
> > - fast-import's `ls` command documentation about its output format
> >   mentions that the output may contain commits, so I tried the trick of
> >   creating a tree with commits, but fast-import then fails with:
> >     fatal: Not a blob (actually a commit)
> >   which I totally understand, but then I wonder why the documentation
> >   mentions it and how one would get a tree containing references to
> >   commits. I guess the documentation should be fixed.
> 
> Odd.  Here's what happens when I try:
> 
>  $ echo "ls $(git rev-parse HEAD)" | git fast-import --quiet
>  fatal: Missing space after tree-ish: ls a4a226a366ab0a173ed9e5f70f2a95d0d21e54c5
>  fast-import: dumping crash report to .git/fast_import_crash_14080
>  $ echo "ls $(git rev-parse HEAD) " | git fast-import --quiet
>  040000 tree d3d38e7d71cb40ebbaf2798b01837b3de43fd4a1
> 
> How did you get that "Not a blob" message?

When trying to *create* a tree with a commit in it, so instead of giving the mark for a blob to a filemodify command, giving a mark for a commit. That is what fails with "Not a blob". So it's not possible to create a tree with a reference to a commit, at least with fast-import. But, the documentation for the ls command says this:

   Output uses the same format as git ls-tree <tree> -- <path>:
        <mode> SP ('blob' | 'tree' | 'commit') SP <dataref> HT <path> LF
The 'commit' string certainly seems it cannot be there.
> I think a good fix would be to teach parse_ls a mode with no <path>
> parameter.  Something like this (untested; needs cleanup and tests):

This would make both your commands output the same thing, right? It wouldn't help my case :)

Mike
Previous: Jonathan NiederNext: Jonathan Nieder
Message 3 of 15 in “Getting a commit sha1 from fast-import in a remote-helper”
  1. Mike HommeyNov 18, 2014
  2. Jonathan NiederNov 18, 2014
  3. Mike HommeyNov 18, 2014
  4. Jonathan NiederNov 18, 2014
  5. Mike HommeyNov 18, 2014
  6. Mike HommeyNov 19, 2014
  7. Jonathan NiederNov 19, 2014
  8. Mike HommeyNov 19, 2014
  9. Jonathan NiederNov 19, 2014
  10. Mike HommeyNov 18, 2014
  11. Mike HommeyNov 18, 2014
  12. Jonathan NiederNov 18, 2014
  13. Mike HommeyNov 18, 2014
  14. Jonathan NiederNov 18, 2014
  15. Mike HommeyNov 18, 2014

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.