From 3e005baf8542a3116e51c4b0a27b72c7e14d949b Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Mon, 15 Jan 2007 06:39:39 -0500 Subject: [PATCH] Don't create a final empty packfile in fast-import. If the last packfile is going to be empty (has 0 objects) then it shouldn't be kept after the import has terminated, as there is no point to the packfile. So rather than hashing it and making the index file, just delete the packfile. Signed-off-by: Shawn O. Pearce --- fast-import.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/fast-import.c b/fast-import.c index 3f747be287..207acb3230 100644 --- a/fast-import.c +++ b/fast-import.c @@ -713,17 +713,23 @@ static void end_packfile() { struct packed_git *old_p = pack_data, *new_p; - fixup_header_footer(); - write_index(idx_name); + if (object_count) { + fixup_header_footer(); + write_index(idx_name); - /* Register the packfile with core git's machinary. */ - new_p = add_packed_git(idx_name, strlen(idx_name), 1); - if (!new_p) - die("core git rejected index %s", idx_name); - new_p->windows = old_p->windows; - new_p->pack_fd = old_p->pack_fd; - all_packs[pack_id++] = new_p; - install_packed_git(new_p); + /* Register the packfile with core git's machinary. */ + new_p = add_packed_git(idx_name, strlen(idx_name), 1); + if (!new_p) + die("core git rejected index %s", idx_name); + new_p->windows = old_p->windows; + new_p->pack_fd = old_p->pack_fd; + all_packs[pack_id++] = new_p; + install_packed_git(new_p); + } + else { + close(pack_fd); + unlink(old_p->pack_name); + } free(old_p); free(idx_name);