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

Re: [PATCHv3 5/6] fast-export: Fix output order of D/F changes

From
Elijah Newren <newren@gmail.com>
Date
Jul 8, 2010, 04:36 UTC
Message-ID
<AANLkTiklqqxUhTBd4In-VQed_SMQ6X0nk2j2ysE20bmD@mail.gmail.com>
In-Reply-To
<7vy6dnrmvu.fsf@alter.siamese.dyndns.org>
On Wed, Jul 7, 2010 at 3:40 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 22 quoted lines
> newren@gmail.com writes:
>
>> From: Elijah Newren <newren@gmail.com>
>>
>> The fast-import stream format requires incremental changes which take place
>> immediately, meaning that for D->F conversions all files below the relevant
>> directory must be deleted before the resulting file of the same name is
>> created.  Reversing the order can result in fast-import silently deleting
>> the file right after creating it, resulting in the file missing from the
>> resulting repository.
>>
>> We correct the order by instructing the diff_tree machinery to compare
>> entries using df_name_compare instead of base_name_compare.
>
> I am not so sure about this one.
>
> You can be walking two trees, one of which has "b-1" (blob), "b-2" (blob)
> and then "b" (tree), while the other one has "b" (blob), "b-1" (blob) and
> then "b-2" (blob).  The patch tells the machinery that "b" (tree) sorts
> just like "b" (blob) only during comparison, but the actual data stream it
> is walking is sorted differently.  Without some form of lookahead, can you
> reliably "correct the order"?

Doh! Yep, you're right. My patch would not handle that case correctly. I'll dig further.

Previous: Junio C HamanoNext: Junio C Hamano
Message 15 of 17 in “[PATCHv3 0/6] D/F conflict fixes”
  1. newren@gmail.comJul 7, 2010
  2. 1/6 Add additional testcases for D/F conflictsnewren@gmail.com, Jul 7, 2010
  3. Junio C HamanoJul 7, 2010
  4. Elijah NewrenJul 8, 2010
  5. Junio C HamanoJul 8, 2010
  6. 2/6 Add a rename + D/F conflict testcasenewren@gmail.com, Jul 7, 2010
  7. Junio C HamanoJul 7, 2010
  8. Elijah NewrenJul 8, 2010
  9. 3/6 merge-recursive: Fix D/F conflictsnewren@gmail.com, Jul 7, 2010
  10. Junio C HamanoJul 7, 2010
  11. Elijah NewrenJul 8, 2010
  12. 4/6 merge_recursive: Fix renames across paths below D/F conflictsnewren@gmail.com, Jul 7, 2010
  13. 5/6 fast-export: Fix output order of D/F changesnewren@gmail.com, Jul 7, 2010
  14. Junio C HamanoJul 7, 2010
  15. Elijah NewrenJul 8, 2010
  16. Junio C HamanoJul 8, 2010
  17. 6/6 fast-import: Improve robustness when D->F changes provided in wrong ordernewren@gmail.com, Jul 7, 2010

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.