]> asedeno.scripts.mit.edu Git - git.git/blobdiff - fast-import.c
Merge branch 'mk/unpack-careful'
[git.git] / fast-import.c
index 117f38c0f1066d3c2627cea7179e0c316372a13e..73e5439d97481a0e4dcaa17d025b27ec3fdcf41b 100644 (file)
@@ -459,6 +459,10 @@ static void write_crash_report(const char *err)
        fclose(rpt);
 }
 
+static void end_packfile(void);
+static void unkeep_all_packs(void);
+static void dump_marks(void);
+
 static NORETURN void die_nicely(const char *err, va_list params)
 {
        static int zombie;
@@ -472,6 +476,9 @@ static NORETURN void die_nicely(const char *err, va_list params)
        if (!zombie) {
                zombie = 1;
                write_crash_report(message);
+               end_packfile();
+               unkeep_all_packs();
+               dump_marks();
        }
        exit(128);
 }
@@ -1509,6 +1516,8 @@ static int update_branch(struct branch *b)
        struct ref_lock *lock;
        unsigned char old_sha1[20];
 
+       if (is_null_sha1(b->sha1))
+               return 0;
        if (read_ref(b->name, old_sha1))
                hashclr(old_sha1);
        lock = lock_any_ref_for_update(b->name, old_sha1, 0);
@@ -2284,7 +2293,8 @@ static void cmd_reset_branch(void)
        else
                b = new_branch(sp);
        read_next_command();
-       if (!cmd_from(b) && command_buf.len > 0)
+       cmd_from(b);
+       if (command_buf.len > 0)
                unread_command_buf = 1;
 }
 
@@ -2370,6 +2380,7 @@ int main(int argc, const char **argv)
 {
        unsigned int i, show_stats = 1;
 
+       setup_git_directory();
        git_config(git_pack_config);
        if (!pack_compression_seen && core_compression_seen)
                pack_compression_level = core_compression_level;