File tree Expand file tree Collapse file tree 2 files changed +43
-2
lines changed Expand file tree Collapse file tree 2 files changed +43
-2
lines changed Original file line number Diff line number Diff line change @@ -1561,14 +1561,16 @@ static struct commit *get_revision_1(struct rev_info *revs)
1561
1561
(commit -> date < revs -> max_age ))
1562
1562
continue ;
1563
1563
if (add_parents_to_list (revs , commit , & revs -> commits ) < 0 )
1564
- return NULL ;
1564
+ die ("Failed to traverse parents of commit %s" ,
1565
+ sha1_to_hex (commit -> object .sha1 ));
1565
1566
}
1566
1567
1567
1568
switch (simplify_commit (revs , commit )) {
1568
1569
case commit_ignore :
1569
1570
continue ;
1570
1571
case commit_error :
1571
- return NULL ;
1572
+ die ("Failed to simplify parents of commit %s" ,
1573
+ sha1_to_hex (commit -> object .sha1 ));
1572
1574
default :
1573
1575
return commit ;
1574
1576
}
Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+
3
+ test_description=' pack should notice missing commit objects'
4
+
5
+ . ./test-lib.sh
6
+
7
+ test_expect_success setup '
8
+ for i in 1 2 3 4 5
9
+ do
10
+ echo "$i" >"file$i" &&
11
+ git add "file$i" &&
12
+ test_tick &&
13
+ git commit -m "$i" &&
14
+ git tag "tag$i"
15
+ done &&
16
+ obj=$(git rev-parse --verify tag3) &&
17
+ fanout=$(expr "$obj" : "\(..\)") &&
18
+ remainder=$(expr "$obj" : "..\(.*\)") &&
19
+ rm -f ".git/objects/$fanout/$remainder"
20
+ '
21
+
22
+ test_expect_success ' check corruption' '
23
+ test_must_fail git fsck
24
+ '
25
+
26
+ test_expect_success ' rev-list notices corruption (1)' '
27
+ test_must_fail git rev-list HEAD
28
+ '
29
+
30
+ test_expect_success ' rev-list notices corruption (2)' '
31
+ test_must_fail git rev-list --objects HEAD
32
+ '
33
+
34
+ test_expect_success ' pack-objects notices corruption' '
35
+ echo HEAD |
36
+ test_must_fail git pack-objects --revs pack
37
+ '
38
+
39
+ test_done
You can’t perform that action at this time.
0 commit comments