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

Re: [PATCH 4/4] fast-import: only store commit objects

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
May 6, 2013, 21:04 UTC
Message-ID
<CAMP44s1Nk7YAjNkTq=ShQbzkMasw6bpcEPTXLb8x+2q-vXLRGg@mail.gmail.com>
In-Reply-To
<518789D1.4010905@alum.mit.edu>
On Mon, May 6, 2013 at 5:45 AM, Michael Haggerty <mhagger@alum.mit.edu> wrote:
Show 53 quoted lines
> On 05/06/2013 12:32 PM, Thomas Rast wrote:
>> Michael Haggerty <mhagger@alum.mit.edu> writes:
>>
>>> On 05/03/2013 08:23 PM, Felipe Contreras wrote:
>>>> On Fri, May 3, 2013 at 12:56 PM, Thomas Rast <trast@inf.ethz.ch> wrote:
>>>>> Felipe Contreras <felipe.contreras@gmail.com> writes:
>>>>
>>>>> How do we know that this doesn't break any users of fast-import?  Your
>>>>> comment isn't very reassuring:
>>>>>
>>>>>> the vast majority of them will never be used again
>>>>>
>>>>> So what's with the minority?
>>>>
>>>> Actually I don't think there's any minority. If the client program
>>>> doesn't store blobs, the blob marks are not used anyway. So there's no
>>>> change.
>>>
>>> I haven't been following this conversation in detail, but your proposed
>>> change sounds like something that would break cvs2git [1].  Let me
>>> explain what cvs2git does and why:
>>>
>>> CVS stores all of the revisions of a single file in a single filename,v
>>> file in rcsfile(5) format.  The revisions are stored as deltas ordered
>>> so that a single revision can be reconstructed from a single serial read
>>> of the file.
>>>
>>> cvs2git reads each of these files once, reconstructing *all* of the
>>> revisions for a file in a single go.  It then pours them into a
>>> git-fast-import stream as blobs and sets a mark on each blob.
>>>
>>> Only much later in the conversion does it have enough information to
>>> reconstruct tree-wide commits.  At that time it outputs git-fast-import
>>> data (to a second file) defining the git commits and their ancestry.
>>> The contents are defined by referring to the marks of blobs from the
>>> first git-fast-import stream file.
>>>
>>> This strategy speeds up the conversion *enormously*.
>>>
>>> So if I understand correctly that you are proposing to stop allowing
>>> marks on blob objects to be set and/or referred to later, then I object
>>> vociferously.
>>
>> The proposed patch wants to stop writing marks (in --export-marks) for
>> anything but commits.  Does cvs2git depend on that?  I.e., are you using
>> two separate fast-import processes for the blob and tree/commit phases
>> you describe above?
>
> Yes, it can be handy to start loading the first "blobfile" in parallel
> with the later stages of the conversion, before the second "dumpfile" is
> ready.  In that case the user needs to pass --export-marks to the first
> fast-import process to export marks on blobs so that the marks can be
> passed to the second fast-import via --import-marks.
It can be used that way, but it doesn't have to be.
> So the proposed change would break a documented use of cvs2git.

It's documented as an alternative. How many people actually use this form over the other? Is there really any advantage? It's possibly that basically nobody is using this form, and there's no benefits.

> Making the export of blob marks optional would of course be OK, as long
> as the default is to export them.
Nobody benefits from leaving the default as it is.
-- 
Felipe Contreras
Previous: Felipe ContrerasNext: Michael Haggerty
Message 24 of 38 in “fast-export: speed improvements”
  1. 0/4 fast-export: speed improvementsFelipe Contreras, May 3, 2013
  2. 1/4 fast-{import,export}: use get_sha1_hex() directlyFelipe Contreras, May 3, 2013
  3. Junio C HamanoMay 3, 2013
  4. 2/4 fast-export: improve speed by skipping blobsFelipe Contreras, May 3, 2013
  5. Junio C HamanoMay 3, 2013
  6. 3/4 fast-export: don't parse all the commitsFelipe Contreras, May 3, 2013
  7. Junio C HamanoMay 3, 2013
  8. Felipe ContrerasMay 4, 2013
  9. Junio C HamanoMay 4, 2013
  10. 4/4 fast-import: only store commit objectsFelipe Contreras, May 3, 2013
  11. Thomas RastMay 3, 2013
  12. Felipe ContrerasMay 3, 2013
  13. Michael HaggertyMay 6, 2013
  14. Thomas RastMay 6, 2013
  15. Michael HaggertyMay 6, 2013
  16. Junio C HamanoMay 6, 2013
  17. Felipe ContrerasMay 6, 2013
  18. Felipe ContrerasMay 6, 2013
  19. Michael HaggertyMay 7, 2013
  20. Johannes SchindelinMay 7, 2013
  21. Felipe ContrerasMay 7, 2013
  22. Michael HaggertyMay 7, 2013
  23. Felipe ContrerasMay 7, 2013
  24. Felipe ContrerasMay 6, 2013
  25. Michael HaggertyMay 7, 2013
  26. Johannes SchindelinMay 7, 2013
  27. Felipe ContrerasMay 7, 2013
  28. Felipe ContrerasMay 7, 2013
  29. Michael HaggertyMay 7, 2013
  30. Felipe ContrerasMay 7, 2013
  31. Junio C HamanoMay 7, 2013
  32. Michael HaggertyMay 7, 2013
  33. Johannes SchindelinMay 6, 2013
  34. Felipe ContrerasMay 6, 2013
  35. Junio C HamanoMay 3, 2013
  36. Felipe ContrerasMay 3, 2013
  37. Junio C HamanoMay 3, 2013
  38. Felipe ContrerasMay 4, 2013

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.