packfile: add repository argument to packed_object_info
Add a repository argument to allow callers of packed_object_info to be more specific about which repository to handle. This is a small mechanical change; it doesn't change the implementation to handle repositories other than the_repository yet. As with the previous commits, use a macro to catch callers passing a repository other than the_repository at compile time. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Stefan Beller <sbeller@google.com> Reviewed-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							144f4948a1
						
					
				
				
					commit
					720aaa1a74
				
			@ -1572,7 +1572,8 @@ static void drop_reused_delta(struct object_entry *entry)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	oi.sizep = &entry->size;
 | 
						oi.sizep = &entry->size;
 | 
				
			||||||
	oi.typep = &entry->type;
 | 
						oi.typep = &entry->type;
 | 
				
			||||||
	if (packed_object_info(entry->in_pack, entry->in_pack_offset, &oi) < 0) {
 | 
						if (packed_object_info(the_repository, entry->in_pack,
 | 
				
			||||||
 | 
								       entry->in_pack_offset, &oi) < 0) {
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
		 * We failed to get the info from this pack for some reason;
 | 
							 * We failed to get the info from this pack for some reason;
 | 
				
			||||||
		 * fall back to sha1_object_info, which may find another copy.
 | 
							 * fall back to sha1_object_info, which may find another copy.
 | 
				
			||||||
 | 
				
			|||||||
@ -1333,8 +1333,8 @@ static void add_delta_base_cache(struct packed_git *p, off_t base_offset,
 | 
				
			|||||||
	hashmap_add(&delta_base_cache, ent);
 | 
						hashmap_add(&delta_base_cache, ent);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int packed_object_info(struct packed_git *p, off_t obj_offset,
 | 
					int packed_object_info_the_repository(struct packed_git *p, off_t obj_offset,
 | 
				
			||||||
		       struct object_info *oi)
 | 
									      struct object_info *oi)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pack_window *w_curs = NULL;
 | 
						struct pack_window *w_curs = NULL;
 | 
				
			||||||
	unsigned long size;
 | 
						unsigned long size;
 | 
				
			||||||
 | 
				
			|||||||
@ -125,7 +125,8 @@ extern void release_pack_memory(size_t);
 | 
				
			|||||||
/* global flag to enable extra checks when accessing packed objects */
 | 
					/* global flag to enable extra checks when accessing packed objects */
 | 
				
			||||||
extern int do_check_packed_object_crc;
 | 
					extern int do_check_packed_object_crc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern int packed_object_info(struct packed_git *pack, off_t offset, struct object_info *);
 | 
					#define packed_object_info(r, p, o, oi) packed_object_info_##r(p, o, oi)
 | 
				
			||||||
 | 
					extern int packed_object_info_the_repository(struct packed_git *pack, off_t offset, struct object_info *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
 | 
					extern void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
 | 
				
			||||||
extern const struct packed_git *has_packed_and_bad(const unsigned char *sha1);
 | 
					extern const struct packed_git *has_packed_and_bad(const unsigned char *sha1);
 | 
				
			||||||
 | 
				
			|||||||
@ -1307,7 +1307,7 @@ int oid_object_info_extended_the_repository(const struct object_id *oid, struct
 | 
				
			|||||||
		 * information below, so return early.
 | 
							 * information below, so return early.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		return 0;
 | 
							return 0;
 | 
				
			||||||
	rtype = packed_object_info(e.p, e.offset, oi);
 | 
						rtype = packed_object_info(the_repository, e.p, e.offset, oi);
 | 
				
			||||||
	if (rtype < 0) {
 | 
						if (rtype < 0) {
 | 
				
			||||||
		mark_bad_packed_object(e.p, real->hash);
 | 
							mark_bad_packed_object(e.p, real->hash);
 | 
				
			||||||
		return oid_object_info_extended(the_repository, real, oi, 0);
 | 
							return oid_object_info_extended(the_repository, real, oi, 0);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user