4
5
. ./test-lib.sh
6
7
-commit_and_pack() {
7
+commit_and_pack () {
8
test_commit "$@" 1>&2 &&
9
SHA1=$(git pack-objects --all --unpacked --incremental .git/objects/pack/pack </dev/null) &&
10
echo pack-${SHA1}.pack
11
}
12
13
+test_no_missing_in_packs () {
14
+ myidx=$(ls -1 .git/objects/pack/*.idx) &&
15
+ test_path_is_file "$myidx" &&
16
+ git verify-pack -v alt_objects/pack/*.idx >orig.raw &&
17
+ sed -n -e "s/^\([0-9a-f]\{40\}\).*/\1/p" orig.raw | sort >orig &&
18
+ git verify-pack -v $myidx >dest.raw &&
19
+ cut -d" " -f1 dest.raw | sort >dest &&
20
+ comm -23 orig dest >missing &&
21
+ test_must_be_empty missing
22
+}
23
+
24
test_expect_success 'objects in packs marked .keep are not repacked' '
25
echo content1 >file1 &&
26
echo content2 >file2 &&
116
mkdir alt_objects/pack &&
117
mv .git/objects/pack/* alt_objects/pack &&
118
git repack -a &&
108
- myidx=$(ls -1 .git/objects/pack/*.idx) &&
109
- test_path_is_file "$myidx" &&
110
- for p in alt_objects/pack/*.idx
111
- do
112
- git verify-pack -v $p | sed -n -e "/^[0-9a-f]\{40\}/p"
113
- done | while read sha1 rest
114
- do
115
- if ! ( git verify-pack -v $myidx | grep "^$sha1" )
116
- then
117
- echo "Missing object in local pack: $sha1"
118
- return 1
119
- fi
120
- done
119
+ test_no_missing_in_packs
120
'
121
122
test_expect_success 'packed obs in alt ODB are repacked when local repo has packs' '
127
git commit -m more_content &&
128
git repack &&
129
git repack -a -d &&
131
- myidx=$(ls -1 .git/objects/pack/*.idx) &&
132
- test_path_is_file "$myidx" &&
133
- for p in alt_objects/pack/*.idx
134
- do
135
- git verify-pack -v $p | sed -n -e "/^[0-9a-f]\{40\}/p"
136
- done | while read sha1 rest
137
- do
138
- if ! ( git verify-pack -v $myidx | grep "^$sha1" )
139
- then
140
- echo "Missing object in local pack: $sha1"
141
- return 1
142
- fi
143
- done
130
+ test_no_missing_in_packs
131
'
132
133
test_expect_success 'packed obs in alternate ODB kept pack are repacked' '
143
fi
144
done &&
145
git repack -a -d &&
159
- myidx=$(ls -1 .git/objects/pack/*.idx) &&
160
- test_path_is_file "$myidx" &&
161
- for p in alt_objects/pack/*.idx
162
- do
163
- git verify-pack -v $p | sed -n -e "/^[0-9a-f]\{40\}/p"
164
- done | while read sha1 rest
165
- do
166
- if ! ( git verify-pack -v $myidx | grep "^$sha1" )
167
- then
168
- echo "Missing object in local pack: $sha1"
169
- return 1
170
- fi
171
- done
146
+ test_no_missing_in_packs
147
'
148
149
test_expect_success 'packed unreachable obs in alternate ODB are not loosened' '