Re: [PATCH] First cut at libifying revlist generation

From: Junio C Hamano <junkio@cox.net>
Date: 2006-02-27 14:11:02
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;

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Mon Feb 27 14:11:41 2006

This archive was generated by hypermail 2.1.8 : 2006-02-27 14:11:54 EST