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

Re: [PATCH] First cut at libifying revlist generation

From
Junio C Hamano <junkio@cox.net>
Date
Feb 27, 2006, 03:11 UTC
Message-ID
<7vpsl93395.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.64.0602251608160.22647@g5.osdl.org>
Linus Torvalds <torvalds@osdl.org> writes:
> Comments? I think this is safe to apply, because I've done a diff of the 
> old non-split rev-list.c against both the new rev-list.c and revision.c, 
> and all the changes _look_ like just moving things around and taking the 
> new "struct rev_info" into account.
I think you would need something the attached patch, at least.

I have a suspicion that this was your easter egg to see how careful I am reading what I apply -- and I failed. Johannes gets a test-pilot star for this. This also means we need a bit better set of tests.

The diff between old rev-list.c and new split files would not have caught the static variable gotcha.

I am clueless about the "limited = (list && list->next)" part, but there is only one commit involved hence the test is false with my testcase "git-rev-list --objects v1.0.0^0..v1.0.0"; I think the old code said dotdot is a limited case.

---
diff --git a/rev-list.c b/rev-list.c
index d1c52a6..630626e 100644
--- a/rev-list.c
+++ b/rev-list.c
@@ -214,8 +214,6 @@ static struct object_list **process_tree
 	return p;
 }
 
-static struct object_list *pending_objects = NULL;
-
 static void show_commit_list(struct commit_list *list)
 {
 	struct object_list *objects = NULL, **p = &objects, *pending;
@@ -226,7 +224,7 @@ static void show_commit_list(struct comm
 		if (process_commit(commit) == STOP)
 			break;
 	}
-	for (pending = pending_objects; pending; pending = pending->next) {
+	for (pending = revs.pending_objects; pending; pending = pending->next) {
 		struct object *obj = pending->item;
 		const char *name = pending->name;
 		if (obj->flags & (UNINTERESTING | SEEN))
@@ -675,7 +673,7 @@ int main(int argc, const char **argv)
 	}
 
 	list = revs.commits;
-	if (list && list->next)
+	if (list)
 		limited = 1;
 
 	if (revs.topo_order)
@@ -689,7 +687,7 @@ int main(int argc, const char **argv)
 		limited = 1;
 		diff_tree_setup_paths(revs.paths);
 	}
-	if (revs.max_age || revs.min_age)
+	if (revs.max_age != -1 || revs.min_age != -1)
 		limited = 1;
 
 	save_commit_buffer = verbose_header;
Previous: Linus TorvaldsNext: Linus Torvalds
Message 5 of 12 in “First cut at libifying revlist generation”
  1. First cut at libifying revlist generationLinus Torvalds, Feb 26, 2006
  2. Junio C HamanoFeb 26, 2006
  3. Johannes SchindelinFeb 27, 2006
  4. Linus TorvaldsFeb 27, 2006
  5. Junio C HamanoFeb 27, 2006
  6. Linus TorvaldsFeb 27, 2006
  7. Junio C HamanoFeb 27, 2006
  8. Linus TorvaldsFeb 27, 2006
  9. Linus TorvaldsFeb 27, 2006
  10. Junio C HamanoFeb 27, 2006
  11. Johannes SchindelinFeb 27, 2006
  12. Junio C HamanoFeb 28, 2006

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.