From: Junio C Hamano Date: Sat, 30 Aug 2008 15:38:19 +0000 (-0700) Subject: Merge branch 'sp/missing-thin-base' into maint X-Git-Tag: v1.6.0.2~40 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/df85f7855da44c730f942b330ada181209d09d7a?hp=-c Merge branch 'sp/missing-thin-base' into maint * sp/missing-thin-base: pack-objects: Allow missing base objects when creating thin packs --- df85f7855da44c730f942b330ada181209d09d7a diff --combined builtin-pack-objects.c index d394c494a5,b43e0b8f27..ef3befe57b --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@@ -499,6 -499,7 +499,6 @@@ static void write_pack_file(void } else { int fd = sha1close(f, NULL, 0); fixup_pack_header_footer(fd, sha1, pack_tmp_name, nr_written); - fsync_or_die(fd, pack_tmp_name); close(fd); } @@@ -1095,9 -1096,12 +1095,12 @@@ static void check_object(struct object_ } entry->type = sha1_object_info(entry->idx.sha1, &entry->size); - if (entry->type < 0) - die("unable to get type of object %s", - sha1_to_hex(entry->idx.sha1)); + /* + * The error condition is checked in prepare_pack(). This is + * to permit a missing preferred base object to be ignored + * as a preferred base. Doing so can result in a larger + * pack file, but the transfer will still take place. + */ } static int pack_offset_sort(const void *_a, const void *_b) @@@ -1721,8 -1725,12 +1724,12 @@@ static void prepare_pack(int window, in if (entry->no_try_delta) continue; - if (!entry->preferred_base) + if (!entry->preferred_base) { nr_deltas++; + if (entry->type < 0) + die("unable to get type of object %s", + sha1_to_hex(entry->idx.sha1)); + } delta_list[n++] = entry; }