path: root/list-objects.h
diff options
authorJeff Hostetler <>2017-11-21 20:58:50 (GMT)
committerJunio C Hamano <>2017-11-22 05:11:57 (GMT)
commit25ec7bcac044057900a0f3c9a8d6ccbb41a066bc (patch)
tree115a72c755c0578349d3cf08bef0b0883fd4153e /list-objects.h
parentc3a9ad311793e16f6f5c5dcc3559133700c70288 (diff)
list-objects: filter objects in traverse_commit_list
Create traverse_commit_list_filtered() and add filtering interface to allow certain objects to be omitted from the traversal. Update traverse_commit_list() to be a wrapper for the above with a null filter to minimize the number of callers that needed to be changed. Object filtering will be used in a future commit by rev-list and pack-objects for partial clone and fetch to omit unwanted objects from the result. traverse_bitmap_commit_list() does not work with filtering. If a packfile bitmap is present, it will not be used. It should be possible to extend such support in the future (at least to simple filters that do not require object pathnames), but that is beyond the scope of this patch series. Signed-off-by: Jeff Hostetler <> Reviewed-by: Jonathan Tan <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'list-objects.h')
1 files changed, 12 insertions, 1 deletions
diff --git a/list-objects.h b/list-objects.h
index 0cebf85..aa618d7 100644
--- a/list-objects.h
+++ b/list-objects.h
@@ -8,4 +8,15 @@ void traverse_commit_list(struct rev_info *, show_commit_fn, show_object_fn, voi
typedef void (*show_edge_fn)(struct commit *);
void mark_edges_uninteresting(struct rev_info *, show_edge_fn);
+struct oidset;
+struct list_objects_filter_options;
+void traverse_commit_list_filtered(
+ struct list_objects_filter_options *filter_options,
+ struct rev_info *revs,
+ show_commit_fn show_commit,
+ show_object_fn show_object,
+ void *show_data,
+ struct oidset *omitted);
+#endif /* LIST_OBJECTS_H */