summaryrefslogtreecommitdiff
path: root/builtin/fast-export.c
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2013-05-05 22:38:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-05-07 14:03:01 (GMT)
commit47bd9bf82daeac71b28a5a697ecc44e70b205e18 (patch)
treec9aa53971e85ef928d63c46afe3c6e7a38ace96b /builtin/fast-export.c
parente6812cfa9aba69a8c9d83b0710291b27bff0f7a3 (diff)
downloadgit-47bd9bf82daeac71b28a5a697ecc44e70b205e18.zip
git-47bd9bf82daeac71b28a5a697ecc44e70b205e18.tar.gz
git-47bd9bf82daeac71b28a5a697ecc44e70b205e18.tar.bz2
fast-export: don't parse commits while reading marks file
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>
Diffstat (limited to 'builtin/fast-export.c')
-rw-r--r--builtin/fast-export.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index dd561e5..18fdfb3 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -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));