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

[PATCH 0/3] fix data corruption in fast-import

From
Dmitry Ivankov <divanorama@gmail.com>
Date
Aug 12, 2011, 10:32 UTC
Message-ID
<1313145170-24471-1-git-send-email-divanorama@gmail.com>

Finally the bug reported first in [1] is solved and has a small testcase. Preliminary attempts can be found in [2] for curious. And the actual "3/3: fix" comes from [3].

Brief introduction. While testing huge imports produced by svn-fe I've found a "failed to unpack delta" error in fast-import, which is actually caused by "sha1 mismatch" error in a packfile, and this one is caused by a bug of producing wrong deltas for tree objects in fast-import.

Looks like that only 'M 040000 sha1_or_mark path' commands could trigger it. They were introduced in tags/v1.7.3-rc0~75^2 (30 Jun 2010 334fba65.. Teach fast-import to import subtrees named by tree id) This series should resolve the bug for any copy/rename/set/delete trees scenario anyway.

I've tested it on a gcc svn repository import - went fine, trees match the gcc git mirror on github. One more test is ~700k commits from kde repository - fine too.

1/3 just extracts a sha1 calculation function for 2/3 2/3 adds a die() for "corrupted" delta data and a testcase that triggers it 3/3 is the fix

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

Dmitry Ivankov (3):
  fast-import: extract object preparation function
  fast-import: add a check for tree delta base sha1
  fast-import: prevent producing bad delta
 fast-import.c          |   85 +++++++++++++++++++++++++++++++++++++++---------
 t/t9300-fast-import.sh |   38 +++++++++++++++++++++
 2 files changed, 107 insertions(+), 16 deletions(-)
-- 
1.7.3.4
Next: Dmitry Ivankov
Message 1 of 14 in “fix data corruption in fast-import”
  1. 0/3 fix data corruption in fast-importDmitry Ivankov, Aug 12, 2011
  2. 1/3 fast-import: extract object preparation functionDmitry Ivankov, Aug 12, 2011
  3. 2/3 fast-import: add a check for tree delta base sha1Dmitry Ivankov, Aug 12, 2011
  4. Jonathan NiederAug 13, 2011
  5. 3/3 fast-import: prevent producing bad deltaDmitry Ivankov, Aug 12, 2011
  6. 0/2 fix data corruption in fast-importDmitry Ivankov, Aug 14, 2011
  7. 1/2 fast-import: add a test for tree delta base corruptionDmitry Ivankov, Aug 14, 2011
  8. 2/2 fast-import: prevent producing bad deltaDmitry Ivankov, Aug 14, 2011
  9. fast-import: do not write bad delta for replaced subtreesJonathan Nieder, Aug 20, 2011
  10. Andreas SchwabAug 20, 2011
  11. Jonathan NiederAug 20, 2011
  12. fast-import: do not write bad delta for replaced subtreesDmitry Ivankov, Aug 20, 2011
  13. Jonathan NiederAug 20, 2011
  14. Dmitry IvankovAug 20, 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.