[PATCH v2 0/2] fix data corruption in fast-import
- From
Dmitry Ivankov <divanorama@gmail.com>
- Date
- Aug 14, 2011, 18:32 UTC
- Message-ID
- <1313346744-30340-1-git-send-email-divanorama@gmail.com>
- In-Reply-To
- <1313145170-24471-1-git-send-email-divanorama@gmail.com>
It turns out the bug is older than "M 040000.." command. Managed to reproduce with just "C .." command from tags/v1.5.3-rc2~6^2 b6f3481b.. Teach fast-import to recursively copy files/directories (Jul 15 2007)
And even better, there is no need to add a explicit check for sha1 mismatch (we may still want to have this, but it can go separately).
Basically the test does: Fill two distinct directories old/a, old/b Commit them (necessary to make trees have sha1 computed and thus become potential delta bases) C old new C old/a new/b M ... new/b/new_file
new/b is stored as a delta against old/a, but with delta base pointing to old/b. And so ls-tree new/b fails, fsck fails both with "failed to apply delta".
Dmitry Ivankov (2): fast-import: add a test for tree delta base corruption fast-import: prevent producing bad delta
fast-import.c | 35 ++++++++++++++++++++++++++++++----- t/t9300-fast-import.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-)
-- 1.7.3.4