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

Re: "git notes show" is orders of magnitude slower than doing it manually with ls-tree and cat-file

From
Mike Hommey <mh@glandium.org>
Date
Nov 26, 2014, 12:30 UTC
Message-ID
<20141126123057.GA14275@glandium.org>
In-Reply-To
<CALKQrgftttSpuw8kc+jC6E5RBet39wHKy3670Z5iG=KQSmrCAw@mail.gmail.com>
On Wed, Nov 26, 2014 at 12:46:20PM +0100, Johan Herland wrote:
Show 33 quoted lines
> (First of all, thanks to both for great investigation and analysis)
> 
> On Wed, Nov 26, 2014 at 5:46 AM, Jeff King <peff@peff.net> wrote:
> > On Wed, Nov 26, 2014 at 11:25:53AM +0900, Mike Hommey wrote:
> >
> >> Now, looking at the notes tree reflog, I see that at some point, some
> >> notes were added at the top-level of the tree, without being nested,
> >> which is strange.
> >
> > That's somewhat expected. The fanout is dynamic based on the number of
> > notes, so early on I think some notes may be found at the top of the tree.
> >
> >> And it looks like it's related to how I've been adding them, through
> >> git-fast-import. I was using notemodify commands, and was using the
> >> filemodify command to load the previous notes tree instead of using the
> >> from command because I don't care about keeping the notes history.
> 
> I'd very much like to see this fast-import stream (or a script
> generating it). I'm assuming that it roughly follows along these lines:
> 
>  - Start a new commit from a clean slate (no 'from')
> 
>  - Do a single filemodify to "load" the previous notes tree.
>    Exactly what does this filemodify command look like? I'm
>    guessing you're using the root tree object from the previous
>    notes tree as <dataref>, and an empty <path>, i.e.:
> 
>      M 040000 $previous_notes_tree_root_sha1 \n
> 
>  - Do a series of notemodify commands for the notes being added in
>    this commit.
> 
>  - End of commit.
That's exactly the scenario.
<snip>
> >   commit=$(echo "final notes tree" | git commit-tree refs/notes/foo^{tree})
> >   git update-ref refs/notes/foo $commit
> 
> I agree that this is probably the best workaround for now.

Indeed, that's about what I had in mind when I said I could easily work around (except I use the ls command in fast-import), and what I implemented.

Mike
Previous: Johan Herland
Message 10 of 10 in “"git notes show" is orders of magnitude slower than doing it manually with ls-tree and cat-file”
  1. Mike HommeyNov 26, 2014
  2. Jeff KingNov 26, 2014
  3. Jeff KingNov 26, 2014
  4. Jeff KingNov 26, 2014
  5. Mike HommeyNov 26, 2014
  6. Jeff KingNov 26, 2014
  7. Mike HommeyNov 26, 2014
  8. Jeff KingNov 26, 2014
  9. Johan HerlandNov 26, 2014
  10. Mike HommeyNov 26, 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.