From: Junio C Hamano Date: Mon, 5 Dec 2011 23:13:42 +0000 (-0800) Subject: Merge branch 'jc/index-pack-reject-dups' X-Git-Tag: v1.7.9-rc0~95 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/33fba9c64e305c64b4d6f4c31f02c1dd7e8fbfa8?hp=-c Merge branch 'jc/index-pack-reject-dups' * jc/index-pack-reject-dups: receive-pack, fetch-pack: reject bogus pack that records objects twice --- 33fba9c64e305c64b4d6f4c31f02c1dd7e8fbfa8 diff --combined pack.h index 324a1d73c0,aca4739319..a8d9b9f2fc --- a/pack.h +++ b/pack.h @@@ -37,7 -37,8 +37,8 @@@ struct pack_header struct pack_idx_option { unsigned flags; /* flag bits */ - #define WRITE_IDX_VERIFY 01 + #define WRITE_IDX_VERIFY 01 /* verify only, do not write the idx file */ + #define WRITE_IDX_STRICT 02 uint32_t version; uint32_t off32_limit; @@@ -70,14 -71,10 +71,14 @@@ struct pack_idx_entry off_t offset; }; + +struct progress; +typedef int (*verify_fn)(const unsigned char*, enum object_type, unsigned long, void*, int*); + extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, unsigned char *sha1); extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr); extern int verify_pack_index(struct packed_git *); -extern int verify_pack(struct packed_git *); +extern int verify_pack(struct packed_git *, verify_fn fn, struct progress *, uint32_t); extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t); extern char *index_pack_lockfile(int fd); extern int encode_in_pack_object_header(enum object_type, uintmax_t, unsigned char *);