[PATCH 6/7] list-objects.c: Avoid recomputing interesting-ness for subtrees when possible
- From
Elijah Newren <newren@gmail.com>
- Date
- Aug 25, 2010, 02:53 UTC
- Message-ID
- <1282704795-29661-7-git-send-email-newren@gmail.com>
- In-Reply-To
- <1282704795-29661-1-git-send-email-newren@gmail.com>
Weather balloon patch. Doesn't seem to help much in benchmarks; in fact I think it sometimes hurts a bit. Is it worthwhile just in case someone comes up with a ginormous tree that is really deep with few entries per tree? I'm leaning against it, but am sending the patch to at least show others that it has been considered.
--- No signed-off-by, since I'm not sold on this patch and am somewhat leaning against it. It would need a better commit message anyway. :-)
list-objects.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/list-objects.c b/list-objects.c index daa50bf..66e4ccc 100644 --- a/list-objects.c +++ b/list-objects.c @@ -61,13 +61,13 @@ static void process_tree(struct rev_info *revs, struct tree *tree, show_object_fn show, struct name_path *path, - const char *name) + const char *name, + int all_interesting) { struct object *obj = &tree->object; struct tree_desc desc; struct name_entry entry; struct name_path me; - int all_interesting = (revs->diffopt.nr_paths == 0); if (!revs->tree_objects) return; @@ -106,7 +106,8 @@ static void process_tree(struct rev_info *revs, if (S_ISDIR(entry.mode)) process_tree(revs, lookup_tree(entry.sha1), - show, &me, entry.path); + show, &me, entry.path, + all_interesting); else if (S_ISGITLINK(entry.mode)) process_gitlink(revs, entry.sha1, show, &me, entry.path); @@ -182,7 +183,7 @@ void traverse_commit_list(struct rev_info *revs, } if (obj->type == OBJ_TREE) { process_tree(revs, (struct tree *)obj, show_object, - NULL, name); + NULL, name, revs->diffopt.nr_paths == 0); continue; } if (obj->type == OBJ_BLOB) {
-- 1.7.2.2.39.gf7e23