fast-export: don't parse commits while reading marks file
authorFelipe Contreras <felipe.contreras@gmail.com>
Sun, 5 May 2013 22:38:54 +0000 (17:38 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 May 2013 14:03:01 +0000 (07:03 -0700)
We don't need the parsed objects at this point, merely the
information that they have marks.

Seems to be three times faster in my setup with lots of objects.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fast-export.c
index dd561e5031955b54c995abde1271c4841c3c7d24..18fdfb31af54585a4a8ca7b61de4d590be4628d1 100644 (file)
@@ -613,6 +613,7 @@ static void import_marks(char *input_file)
                char *line_end, *mark_end;
                unsigned char sha1[20];
                struct object *object;
+               struct commit *commit;
                enum object_type type;
 
                line_end = strchr(line, '\n');
@@ -636,7 +637,11 @@ static void import_marks(char *input_file)
                        /* only commits */
                        continue;
 
-               object = parse_object(sha1);
+               commit = lookup_commit(sha1);
+               if (!commit)
+                       die("not a commit? can't happen: %s", sha1_to_hex(sha1));
+
+               object = &commit->object;
 
                if (object->flags & SHOWN)
                        error("Object %s already has a mark", sha1_to_hex(sha1));