Merge branch 'jc/maint-unpack-objects-strict'
* jc/maint-unpack-objects-strict: Fix "unpack-objects --strict" Conflicts: builtin-unpack-objects.cmaint
						commit
						ab36d06f12
					
				|  | @ -181,10 +181,10 @@ static void write_cached_object(struct object *obj) | ||||||
| static int check_object(struct object *obj, int type, void *data) | static int check_object(struct object *obj, int type, void *data) | ||||||
| { | { | ||||||
| 	if (!obj) | 	if (!obj) | ||||||
| 		return 0; | 		return 1; | ||||||
|  |  | ||||||
| 	if (obj->flags & FLAG_WRITTEN) | 	if (obj->flags & FLAG_WRITTEN) | ||||||
| 		return 1; | 		return 0; | ||||||
|  |  | ||||||
| 	if (type != OBJ_ANY && obj->type != type) | 	if (type != OBJ_ANY && obj->type != type) | ||||||
| 		die("object type mismatch"); | 		die("object type mismatch"); | ||||||
|  | @ -195,22 +195,24 @@ static int check_object(struct object *obj, int type, void *data) | ||||||
| 		if (type != obj->type || type <= 0) | 		if (type != obj->type || type <= 0) | ||||||
| 			die("object of unexpected type"); | 			die("object of unexpected type"); | ||||||
| 		obj->flags |= FLAG_WRITTEN; | 		obj->flags |= FLAG_WRITTEN; | ||||||
| 		return 1; | 		return 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (fsck_object(obj, 1, fsck_error_function)) | 	if (fsck_object(obj, 1, fsck_error_function)) | ||||||
| 		die("Error in object"); | 		die("Error in object"); | ||||||
| 	if (!fsck_walk(obj, check_object, NULL)) | 	if (fsck_walk(obj, check_object, NULL)) | ||||||
| 		die("Error on reachable objects of %s", sha1_to_hex(obj->sha1)); | 		die("Error on reachable objects of %s", sha1_to_hex(obj->sha1)); | ||||||
| 	write_cached_object(obj); | 	write_cached_object(obj); | ||||||
| 	return 1; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| static void write_rest(void) | static void write_rest(void) | ||||||
| { | { | ||||||
| 	unsigned i; | 	unsigned i; | ||||||
| 	for (i = 0; i < nr_objects; i++) | 	for (i = 0; i < nr_objects; i++) { | ||||||
| 		check_object(obj_list[i].obj, OBJ_ANY, NULL); | 		if (obj_list[i].obj) | ||||||
|  | 			check_object(obj_list[i].obj, OBJ_ANY, NULL); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| static void added_object(unsigned nr, enum object_type type, | static void added_object(unsigned nr, enum object_type type, | ||||||
|  |  | ||||||
|  | @ -0,0 +1,35 @@ | ||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | test_description='unpack-objects' | ||||||
|  |  | ||||||
|  | . ./test-lib.sh | ||||||
|  |  | ||||||
|  | test_expect_success setup ' | ||||||
|  | 	mkdir pub.git && | ||||||
|  | 	GIT_DIR=pub.git git init --bare | ||||||
|  | 	GIT_DIR=pub.git git config receive.fsckobjects true && | ||||||
|  | 	mkdir work && | ||||||
|  | 	( | ||||||
|  | 		cd work && | ||||||
|  | 		git init && | ||||||
|  | 		mkdir -p gar/bage && | ||||||
|  | 		( | ||||||
|  | 			cd gar/bage && | ||||||
|  | 			git init && | ||||||
|  | 			>junk && | ||||||
|  | 			git add junk && | ||||||
|  | 			git commit -m "Initial junk" | ||||||
|  | 		) && | ||||||
|  | 		git add gar/bage && | ||||||
|  | 		git commit -m "Initial superproject" | ||||||
|  | 	) | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_expect_success push ' | ||||||
|  | 	( | ||||||
|  | 		cd work && | ||||||
|  | 		git push ../pub.git master | ||||||
|  | 	) | ||||||
|  | ' | ||||||
|  |  | ||||||
|  | test_done | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano