git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCHv2 7/8] list-objects.c: Avoid recomputing interesting-ness for subtrees when possible

From
Elijah Newren <newren@gmail.com>
Date
Aug 26, 2010, 06:21 UTC
Message-ID
<1282803711-10253-8-git-send-email-newren@gmail.com>
In-Reply-To
<1282803711-10253-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 bb95962..488428b 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);
 	char *full_prefix = NULL;
 	int full_prefix_len = 0;
 
@@ -112,7 +112,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);
@@ -189,7 +190,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.45.ga60f
Previous: Elijah NewrenNext: Elijah Newren
Message 8 of 10 in “[PATCHv2 0/8] Make rev-list --objects work with pathspecs; minor optimizations”
  1. Elijah NewrenAug 26, 2010
  2. 1/8 Add testcases showing how pathspecs are ignored with rev-list --objectsElijah Newren, Aug 26, 2010
  3. 2/8 Make rev-list --objects work together with pathspecsElijah Newren, Aug 26, 2010
  4. 3/8 Document pre-condition for tree_entry_interestingElijah Newren, Aug 26, 2010
  5. 4/8 tree-walk: Correct bitrotted comment about tree_entry()Elijah Newren, Aug 26, 2010
  6. 5/8 tree_entry_interesting(): Make return value more specificElijah Newren, Aug 26, 2010
  7. 6/8 diff_tree(): Skip skip_uninteresting() when all remaining paths interestingElijah Newren, Aug 26, 2010
  8. 7/8 list-objects.c: Avoid recomputing interesting-ness for subtrees when possibleElijah Newren, Aug 26, 2010
  9. 8/8 tree-diff.c: Avoid recomputing interesting-ness for subtrees when possibleElijah Newren, Aug 26, 2010
  10. Junio C HamanoAug 27, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.