[PATCH v2 3/3] fast-export: don't parse all the commits
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- May 5, 2013, 22:38 UTC
- Message-ID
- <1367793534-8401-4-git-send-email-felipe.contreras@gmail.com>
- In-Reply-To
- <1367793534-8401-1-git-send-email-felipe.contreras@gmail.com>
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> --- builtin/fast-export.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/builtin/fast-export.c b/builtin/fast-export.c index a5b8da8..d1d68e9 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));
-- 1.8.3.rc0.401.g45bba44