Merge branch 'ar/submodule-add-config'
[git/debian.git] / t / t9302-fast-import-unpack-limit.sh
blobf519e4f1bfe62f9ec550333d400ff4fa888d1bc3
1 #!/bin/sh
2 test_description='test git fast-import unpack limit'
3 . ./test-lib.sh
5 test_expect_success 'create loose objects on import' '
6 test_tick &&
7 cat >input <<-INPUT_END &&
8 commit refs/heads/main
9 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
10 data <<COMMIT
11 initial
12 COMMIT
14 done
15 INPUT_END
17 git -c fastimport.unpackLimit=2 fast-import --done <input &&
18 git fsck --no-progress &&
19 test $(find .git/objects/?? -type f | wc -l) -eq 2 &&
20 test $(find .git/objects/pack -type f | wc -l) -eq 0
23 test_expect_success 'bigger packs are preserved' '
24 test_tick &&
25 cat >input <<-INPUT_END &&
26 commit refs/heads/main
27 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
28 data <<COMMIT
29 incremental should create a pack
30 COMMIT
31 from refs/heads/main^0
33 commit refs/heads/branch
34 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
35 data <<COMMIT
36 branch
37 COMMIT
39 done
40 INPUT_END
42 git -c fastimport.unpackLimit=2 fast-import --done <input &&
43 git fsck --no-progress &&
44 test $(find .git/objects/?? -type f | wc -l) -eq 2 &&
45 test $(find .git/objects/pack -type f | wc -l) -eq 2
48 test_expect_success 'lookups after checkpoint works' '
49 hello_id=$(echo hello | git hash-object --stdin -t blob) &&
50 id="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" &&
51 before=$(git rev-parse refs/heads/main^0) &&
53 cat <<-INPUT_END &&
54 blob
55 mark :1
56 data 6
57 hello
59 commit refs/heads/main
60 mark :2
61 committer $id
62 data <<COMMIT
63 checkpoint after this
64 COMMIT
65 from refs/heads/main^0
66 M 100644 :1 hello
68 # pre-checkpoint
69 cat-blob :1
70 cat-blob $hello_id
71 checkpoint
72 # post-checkpoint
73 cat-blob :1
74 cat-blob $hello_id
75 INPUT_END
77 n=0 &&
78 from=$before &&
79 while test x"$from" = x"$before"
81 if test $n -gt 30
82 then
83 echo >&2 "checkpoint did not update branch" &&
84 exit 1
85 else
86 n=$(($n + 1))
87 fi &&
88 sleep 1 &&
89 from=$(git rev-parse refs/heads/main^0)
90 done &&
91 cat <<-INPUT_END &&
92 commit refs/heads/main
93 committer $id
94 data <<COMMIT
95 make sure from "unpacked sha1 reference" works, too
96 COMMIT
97 from $from
98 INPUT_END
99 echo done
100 ) | git -c fastimport.unpackLimit=100 fast-import --done &&
101 test $(find .git/objects/?? -type f | wc -l) -eq 6 &&
102 test $(find .git/objects/pack -type f | wc -l) -eq 2
105 test_done