object-store.h: teach for_each_packed_object to ignore kept packs
The next patch will reimplement a function that wants to iterate over packed objects while ignoring packs which are marked as kept (either in-core or on-disk). Teach for_each_packed_object() to ignore all objects from those packs by adding a new flag for each of the "kept" states that a pack can be in. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 Taylor Blau
					Taylor Blau
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							c4203212e3
						
					
				
				
					commit
					a241878ac7
				
			| @ -455,6 +455,12 @@ enum for_each_object_flags { | ||||
| 	 * Visit objects within a pack in packfile order rather than .idx order | ||||
| 	 */ | ||||
| 	FOR_EACH_OBJECT_PACK_ORDER = (1<<2), | ||||
|  | ||||
| 	/* Only iterate over packs that are not marked as kept in-core. */ | ||||
| 	FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS = (1<<3), | ||||
|  | ||||
| 	/* Only iterate over packs that do not have .keep files. */ | ||||
| 	FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4), | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  | ||||
| @ -2205,6 +2205,12 @@ int for_each_packed_object(each_packed_object_fn cb, void *data, | ||||
| 		if ((flags & FOR_EACH_OBJECT_PROMISOR_ONLY) && | ||||
| 		    !p->pack_promisor) | ||||
| 			continue; | ||||
| 		if ((flags & FOR_EACH_OBJECT_SKIP_IN_CORE_KEPT_PACKS) && | ||||
| 		    p->pack_keep_in_core) | ||||
| 			continue; | ||||
| 		if ((flags & FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS) && | ||||
| 		    p->pack_keep) | ||||
| 			continue; | ||||
| 		if (open_pack_index(p)) { | ||||
| 			pack_errors = 1; | ||||
| 			continue; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user