parent
							
								
									81f2bb1f54
								
							
						
					
					
						commit
						3b42a63cb5
					
				
							
								
								
									
										38
									
								
								rev-list.c
								
								
								
								
							
							
						
						
									
										38
									
								
								rev-list.c
								
								
								
								
							|  | @ -84,6 +84,25 @@ static int everybody_uninteresting(struct commit_list *list) | ||||||
| 	return 1; | 	return 1; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | struct commit_list *limit_list(struct commit_list *list, struct commit *end) | ||||||
|  | { | ||||||
|  | 	struct commit_list *newlist = NULL; | ||||||
|  | 	struct commit_list **p = &newlist; | ||||||
|  | 	do { | ||||||
|  | 		struct commit *commit = pop_most_recent_commit(&list, SEEN); | ||||||
|  | 		struct object *obj = &commit->object; | ||||||
|  |  | ||||||
|  | 		if (commit == end || (obj->flags & UNINTERESTING)) { | ||||||
|  | 			mark_parents_uninteresting(commit); | ||||||
|  | 			if (everybody_uninteresting(list)) | ||||||
|  | 				break; | ||||||
|  | 			continue; | ||||||
|  | 		} | ||||||
|  | 		p = &commit_list_insert(commit, p)->next; | ||||||
|  | 	} while (list); | ||||||
|  | 	return newlist; | ||||||
|  | } | ||||||
|  |  | ||||||
| int main(int argc, char **argv) | int main(int argc, char **argv) | ||||||
| { | { | ||||||
| 	int nr_sha; | 	int nr_sha; | ||||||
|  | @ -144,23 +163,8 @@ int main(int argc, char **argv) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	commit_list_insert(commit, &list); | 	commit_list_insert(commit, &list); | ||||||
| 	if (end) { | 	if (end) | ||||||
| 		struct commit_list *newlist = NULL; | 		list = limit_list(list, end); | ||||||
| 		struct commit_list **p = &newlist; |  | ||||||
| 		do { |  | ||||||
| 			struct commit *commit = pop_most_recent_commit(&list, SEEN); |  | ||||||
| 			struct object *obj = &commit->object; |  | ||||||
|  |  | ||||||
| 			if (commit == end || (obj->flags & UNINTERESTING)) { |  | ||||||
| 				mark_parents_uninteresting(commit); |  | ||||||
| 				if (everybody_uninteresting(list)) |  | ||||||
| 					break; |  | ||||||
| 				continue; |  | ||||||
| 			} |  | ||||||
| 			p = &commit_list_insert(commit, p)->next; |  | ||||||
| 		} while (list); |  | ||||||
| 		list = newlist; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	show_commit_list(list); | 	show_commit_list(list); | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Linus Torvalds
						Linus Torvalds