Merge branch 'maint'
* maint: revision traversal and pack: notice and die on missing commitmaint
						commit
						aff4e8dc21
					
				|  | @ -1738,14 +1738,16 @@ static struct commit *get_revision_1(struct rev_info *revs) | |||
| 			    (commit->date < revs->max_age)) | ||||
| 				continue; | ||||
| 			if (add_parents_to_list(revs, commit, &revs->commits, NULL) < 0) | ||||
| 				return NULL; | ||||
| 				die("Failed to traverse parents of commit %s", | ||||
| 				    sha1_to_hex(commit->object.sha1)); | ||||
| 		} | ||||
|  | ||||
| 		switch (simplify_commit(revs, commit)) { | ||||
| 		case commit_ignore: | ||||
| 			continue; | ||||
| 		case commit_error: | ||||
| 			return NULL; | ||||
| 			die("Failed to simplify parents of commit %s", | ||||
| 			    sha1_to_hex(commit->object.sha1)); | ||||
| 		default: | ||||
| 			return commit; | ||||
| 		} | ||||
|  |  | |||
|  | @ -0,0 +1,39 @@ | |||
| #!/bin/sh | ||||
|  | ||||
| test_description='pack should notice missing commit objects' | ||||
|  | ||||
| . ./test-lib.sh | ||||
|  | ||||
| test_expect_success setup ' | ||||
| 	for i in 1 2 3 4 5 | ||||
| 	do | ||||
| 		echo "$i" >"file$i" && | ||||
| 		git add "file$i" && | ||||
| 		test_tick && | ||||
| 		git commit -m "$i" && | ||||
| 		git tag "tag$i" | ||||
| 	done && | ||||
| 	obj=$(git rev-parse --verify tag3) && | ||||
| 	fanout=$(expr "$obj" : "\(..\)") && | ||||
| 	remainder=$(expr "$obj" : "..\(.*\)") && | ||||
| 	rm -f ".git/objects/$fanout/$remainder" | ||||
| ' | ||||
|  | ||||
| test_expect_success 'check corruption' ' | ||||
| 	test_must_fail git fsck | ||||
| ' | ||||
|  | ||||
| test_expect_success 'rev-list notices corruption (1)' ' | ||||
| 	test_must_fail git rev-list HEAD | ||||
| ' | ||||
|  | ||||
| test_expect_success 'rev-list notices corruption (2)' ' | ||||
| 	test_must_fail git rev-list --objects HEAD | ||||
| ' | ||||
|  | ||||
| test_expect_success 'pack-objects notices corruption' ' | ||||
| 	echo HEAD | | ||||
| 	test_must_fail git pack-objects --revs pack | ||||
| ' | ||||
|  | ||||
| test_done | ||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano