The pack index-writing code is capable of detecting and rejecting duplicate entries. This can be used with index-pack to prevent buggy foreign packs from entering the repository. However, we can also be careful about the packs we generate, by double-checking during the index write that we do not have any duplicate objects. This should never happen, but it serves as an additional check that we are not generating such packfiles. Signed-off-by: Jeff King <peff@xxxxxxxx> --- This turns on rejection for everywhere _except_ a separately-run index-pack. If we decide to turn it on there, too, it would make sense to scrap this patch and just put it in reset_pack_idx_opts(). builtin/pack-objects.c | 1 + bulk-checkin.c | 1 + fast-import.c | 1 + 3 files changed, 3 insertions(+) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index f069462..8da2a66 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -2511,6 +2511,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) read_replace_refs = 0; reset_pack_idx_option(&pack_idx_opts); + pack_idx_opts.duplicates = WRITE_IDX_DUPLICATES_REJECT; git_config(git_pack_config, NULL); if (!pack_compression_seen && core_compression_seen) pack_compression_level = core_compression_level; diff --git a/bulk-checkin.c b/bulk-checkin.c index 6b0b6d4..bad191f 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -174,6 +174,7 @@ static void prepare_to_stream(struct bulk_checkin_state *state, state->f = create_tmp_packfile(&state->pack_tmp_name); reset_pack_idx_option(&state->pack_idx_opts); + state->pack_idx_opts.duplicates = WRITE_IDX_DUPLICATES_REJECT; /* Pretend we are going to write only one object */ state->offset = write_pack_header(state->f, 1); diff --git a/fast-import.c b/fast-import.c index 23f625f..b7beab0 100644 --- a/fast-import.c +++ b/fast-import.c @@ -3360,6 +3360,7 @@ int main(int argc, char **argv) setup_git_directory(); reset_pack_idx_option(&pack_idx_opts); + pack_idx_opts.duplicates = WRITE_IDX_DUPLICATES_REJECT; git_config(git_pack_config, NULL); if (!pack_compression_seen && core_compression_seen) pack_compression_level = core_compression_level; -- 1.8.4.rc2.28.g6bb5f3f -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html