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

[PATCH/WIP 0/7] was: long fast-import errors out "failed to apply delta"

From
Dmitry Ivankov <divanorama@gmail.com>
Date
Jul 28, 2011, 04:46 UTC
Message-ID
<1311828370-30477-1-git-send-email-divanorama@gmail.com>

A very short summary. It was found [1] that fast-import sometimes can produce broken packfiles (sha1 mismatch) or even wrong packfiles (data differs from what was expected). This happens mostly on not so tiny svn-to-git or even cvs-to-svn-to-git imports with all these copying across the tree (simulating tags/branches as a directories in git, for example). But I won't be surprised if this can happen without these operations too.

Technically, fast-import has in-memory tree representation where it stores sha1's of some previous tree states (to make delta on them), but when it comes to producing the delta, old sha1's tree content is fetched from the in-memory node and it's children (not via sha1->object lookup). And these can turn out to be unrelated to each other as some operations changes the children's states.

The most wanted bit for these patches is small testcases. Keeping in mind all the in-memory tree state and fast-import logic is hard for me, so I wasn't able to create small tests (the best is [2] - 15M archive + custom git builds + fix the Makefile in [2] + a few minutes to reproduce). Another good todo is to always avoid base sha1's mismatch (not just to avoid corruption if it is detected). I think I can do this, but I won't be sure in the code unless there is a bunch of good tests, this series is quite big already.

[1] http://thread.gmane.org/gmane.comp.version-control.git/176753 [2] http://thread.gmane.org/gmane.comp.version-control.git/176753/focus=177901

Dmitry Ivankov (7):
  fast-import: extract object preparation function
  fast-import: be saner with temporary trees
  fast-import: fix a data corruption in parse_ls
  fast-import: fix data corruption in store_tree
  fast-import: extract tree_content reading function
  fast-import: workaround data corruption
  fast-import: fix data corruption in load_tree
 fast-import.c |  169 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 135 insertions(+), 34 deletions(-)
-- 
1.7.3.4
Next: Dmitry Ivankov
Message 1 of 13 in “was: long fast-import errors out "failed to apply delta"”
  1. 0/7 was: long fast-import errors out "failed to apply delta"Dmitry Ivankov, Jul 28, 2011
  2. 1/7 fast-import: extract object preparation functionDmitry Ivankov, Jul 28, 2011
  3. 2/7 fast-import: be saner with temporary treesDmitry Ivankov, Jul 28, 2011
  4. Jonathan NiederJul 28, 2011
  5. 3/7 fast-import: fix a data corruption in parse_lsDmitry Ivankov, Jul 28, 2011
  6. Jonathan NiederJul 28, 2011
  7. 4/7 fast-import: fix data corruption in store_treeDmitry Ivankov, Jul 28, 2011
  8. Jonathan NiederJul 28, 2011
  9. Dmitry IvankovJul 28, 2011
  10. 5/7 fast-import: extract tree_content reading functionDmitry Ivankov, Jul 28, 2011
  11. 6/7 fast-import: workaround data corruptionDmitry Ivankov, Jul 28, 2011
  12. Jonathan NiederJul 28, 2011
  13. 7/7 fast-import: fix data corruption in load_treeDmitry Ivankov, Jul 28, 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.