diff options
| -rw-r--r-- | builtin/pack-objects.c | 16 | 
1 files changed, 15 insertions, 1 deletions
| diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index f8eba53c82..3cbeb299d1 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1298,9 +1298,23 @@ static int try_delta(struct unpacked *trg, struct unpacked *src,  		read_lock();  		src->data = read_sha1_file(src_entry->idx.sha1, &type, &sz);  		read_unlock(); -		if (!src->data) +		if (!src->data) { +			if (src_entry->preferred_base) { +				static int warned = 0; +				if (!warned++) +					warning("object %s cannot be read", +						sha1_to_hex(src_entry->idx.sha1)); +				/* +				 * Those objects are not included in the +				 * resulting pack.  Be resilient and ignore +				 * them if they can't be read, in case the +				 * pack could be created nevertheless. +				 */ +				return 0; +			}  			die("object %s cannot be read",  			    sha1_to_hex(src_entry->idx.sha1)); +		}  		if (sz != src_size)  			die("object %s inconsistent object length (%lu vs %lu)",  			    sha1_to_hex(src_entry->idx.sha1), sz, src_size); | 
