fast-import: add a test for tree delta base corruption
fast-import is able to write imported tree objects in delta format. It holds a tree structure in memory where each tree entry may have a delta base sha1 assigned. When delta base data is needed it is reconstructed from this in-memory structure. Though sometimes the delta base data doesn't match the delta base sha1 so wrong or even corrupt pack is produced. Add a small test that produces a corrupt pack. It uses just tree copy and file modification commands aside from the very basic commit and blob commands. Signed-off-by: Dmitry Ivankov <divanorama@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0906f6e14e
commit
9a0edb79f2
@ -734,6 +734,47 @@ test_expect_success \
|
||||
git diff-tree --abbrev --raw L^ L >output &&
|
||||
test_cmp expect output'
|
||||
|
||||
cat >input <<INPUT_END
|
||||
blob
|
||||
mark :1
|
||||
data <<EOF
|
||||
the data
|
||||
EOF
|
||||
|
||||
commit refs/heads/L2
|
||||
committer C O Mitter <committer@example.com> 1112912473 -0700
|
||||
data <<COMMIT
|
||||
init L2
|
||||
COMMIT
|
||||
M 644 :1 a/b/c
|
||||
M 644 :1 a/b/d
|
||||
M 644 :1 a/e/f
|
||||
|
||||
commit refs/heads/L2
|
||||
committer C O Mitter <committer@example.com> 1112912473 -0700
|
||||
data <<COMMIT
|
||||
update L2
|
||||
COMMIT
|
||||
C a g
|
||||
C a/e g/b
|
||||
M 644 :1 g/b/h
|
||||
INPUT_END
|
||||
|
||||
cat <<EOF >expect
|
||||
g/b/f
|
||||
g/b/h
|
||||
EOF
|
||||
|
||||
test_expect_failure \
|
||||
'L: nested tree copy does not corrupt deltas' \
|
||||
'git fast-import <input &&
|
||||
git ls-tree L2 g/b/ >tmp &&
|
||||
cat tmp | cut -f 2 >actual &&
|
||||
test_cmp expect actual &&
|
||||
git fsck `git rev-parse L2`'
|
||||
|
||||
git update-ref -d refs/heads/L2
|
||||
|
||||
###
|
||||
### series M
|
||||
###
|
||||
|
Loading…
Reference in New Issue
Block a user