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

Re: [PATCH] fast-import: Allow filemodify to set the root

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Oct 8, 2010, 08:00 UTC
Message-ID
<20101008080027.GC4671@burratino>
In-Reply-To
<4CAEC6E6.5000305@viscovery.net>
Some quick answers before I go to sleep.
Johannes Sixt wrote:
> What is the special new thing here? That "" means 'empty string' == 'tree
> at the root'? If so:
Yes.
Show 6 quoted lines
> 1. Then this is the missing piece in the justification. Then I could buy
> that the observed speed-up is due to the reuse of an existing tree object
> (which avoids parsing it and re-constructing it from its pieces because
> fast-imports syntax didn't allow it otherwise). But it has nothing to do
> with new loose objects (the re-constructed object would be identical to an
> existing one).
If I remember correctly:

Version 1 of the script was similar to filter-branch and used "git read-tree", "git write-tree", and "git commit-tree" (or something equivalent). Reconstructing the trees seemed to be a significant overhead, leading to:

Version 2, which just called "git commit-tree" (or equivalent) repeatedly. What this patch allows is

Version 3, which is a bit over 20% faster than version 2 and uses fast-import to write the new commits directly to pack.

That speed-up could be due to avoiding the repeated fork() + exec() + git startup cost, or avoiding loose objects, or any number of other things. Without this patch, one could write

Theoretical version 1', which uses cat-file --batch to unpack each tree and uses fast-import to write commits with the same (recreated) tree directly to pack. But that would be kind of insane.

> 2. Without this patch, would this syntax create a tree object with a name
> consisting of two double-quotes in the root? Or would it be a syntax
> error?
Syntax error.
> How would one construct such an entry with this patch?
M 040000 <tree id> "\"\""
Thanks again.
Previous: Johannes SixtNext: Ramkumar Ramachandra
Message 11 of 31 in “fast-import: Allow filemodify to set the root”
  1. fast-import: Allow filemodify to set the rootDavid Barr, Oct 7, 2010
  2. Sverre RabbelierOct 7, 2010
  3. Jonathan NiederOct 7, 2010
  4. Sverre RabbelierOct 7, 2010
  5. David BarrOct 7, 2010
  6. fast-import: Allow filemodify to set the rootDavid Barr, Oct 7, 2010
  7. Sverre RabbelierOct 7, 2010
  8. Johannes SixtOct 8, 2010
  9. Jonathan NiederOct 8, 2010
  10. Johannes SixtOct 8, 2010
  11. Jonathan NiederOct 8, 2010
  12. Ramkumar RamachandraOct 8, 2010
  13. Gabriel FilionOct 8, 2010
  14. David Michael BarrOct 8, 2010
  15. Sverre RabbelierOct 8, 2010
  16. Jonathan NiederOct 8, 2010
  17. David Michael BarrOct 9, 2010
  18. Sverre RabbelierOct 9, 2010
  19. fast-import: Allow filemodify to set the rootDavid Barr, Oct 10, 2010
  20. Jonathan NiederOct 11, 2010
  21. 0/2 Re: fast-import: Allow filemodify to set the rootJonathan Nieder, Oct 18, 2010
  22. 1/2 fast-import: filemodify after M 040000 <tree> "" crashesJonathan Nieder, Oct 18, 2010
  23. Sverre RabbelierOct 18, 2010
  24. Jonathan NiederOct 18, 2010
  25. fast-import: do not clear notes in do_change_note_fanout()Jonathan Nieder, Oct 20, 2010
  26. 2/2 fast-import: tighten M 040000 syntaxJonathan Nieder, Oct 18, 2010
  27. Documentation/fast-import: put explanation of M 040000 <dataref> "" in contextJonathan Nieder, Jan 16, 2011
  28. Junio C HamanoJan 18, 2011
  29. Jonathan NiederJan 18, 2011
  30. Junio C HamanoJan 18, 2011
  31. Jonathan NiederJan 18, 2011

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.