diff mbox series

[05/11] list-objects: consolidate traverse_commit_list[_filtered]

Message ID ec57ed5c37fdcb9fe31a16a09178642a5c219115.1645638911.git.gitgitgadget@gmail.com (mailing list archive)
State Superseded
Headers show
Series Partial bundles | expand

Commit Message

Derrick Stolee Feb. 23, 2022, 5:55 p.m. UTC
From: Derrick Stolee <derrickstolee@github.com>

Now that all consumers of traverse_commit_list_filtered() populate the
'filter' member of 'struct rev_info', we can drop that parameter from
the method prototype to simplify things. In addition, the only thing
different now between traverse_commit_list_filtered() and
traverse_commit_list() is the presence of the 'omitted' parameter, which
is only non-NULL for one caller. We can consolidate these two methods by
having one call the other and use the simpler form everywhere the
'omitted' paramter would be NULL.

Signed-off-by: Derrick Stolee <derrickstolee@github.com>
---
 builtin/pack-objects.c |  6 +++---
 builtin/rev-list.c     |  2 +-
 list-objects.c         | 25 ++++++++-----------------
 list-objects.h         | 12 ++++++++++--
 pack-bitmap.c          |  6 +++---
 5 files changed, 25 insertions(+), 26 deletions(-)

Comments

Junio C Hamano March 4, 2022, 10:30 p.m. UTC | #1
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Derrick Stolee <derrickstolee@github.com>
>
> Now that all consumers of traverse_commit_list_filtered() populate the
> 'filter' member of 'struct rev_info', we can drop that parameter from
> the method prototype to simplify things. In addition, the only thing
> different now between traverse_commit_list_filtered() and
> traverse_commit_list() is the presence of the 'omitted' parameter, which
> is only non-NULL for one caller. We can consolidate these two methods by
> having one call the other and use the simpler form everywhere the
> 'omitted' paramter would be NULL.

Nice.  Modulo "paramter" -> "parameter".

>
> Signed-off-by: Derrick Stolee <derrickstolee@github.com>
> ---
>  builtin/pack-objects.c |  6 +++---
>  builtin/rev-list.c     |  2 +-
>  list-objects.c         | 25 ++++++++-----------------
>  list-objects.h         | 12 ++++++++++--
>  pack-bitmap.c          |  6 +++---
>  5 files changed, 25 insertions(+), 26 deletions(-)
>
> diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
> index 57f2cf49696..0432ae1e499 100644
> --- a/builtin/pack-objects.c
> +++ b/builtin/pack-objects.c
> @@ -3778,9 +3778,9 @@ static void get_object_list(int ac, const char **av)
>  
>  	if (!fn_show_object)
>  		fn_show_object = show_object;
> -	traverse_commit_list_filtered(revs.filter, &revs,
> -				      show_commit, fn_show_object, NULL,
> -				      NULL);
> +	traverse_commit_list(&revs,
> +			     show_commit, fn_show_object,
> +			     NULL);
>  
>  	if (unpack_unreachable_expiration) {
>  		revs.ignore_missing_links = 1;
> diff --git a/builtin/rev-list.c b/builtin/rev-list.c
> index 556e78aebb9..3ab727817fd 100644
> --- a/builtin/rev-list.c
> +++ b/builtin/rev-list.c
> @@ -733,7 +733,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
>  		oidset_init(&missing_objects, DEFAULT_OIDSET_SIZE);
>  
>  	traverse_commit_list_filtered(
> -		revs.filter, &revs, show_commit, show_object, &info,
> +		&revs, show_commit, show_object, &info,
>  		(arg_print_omitted ? &omitted_objects : NULL));
>  
>  	if (arg_print_omitted) {
> diff --git a/list-objects.c b/list-objects.c
> index 2f623f82115..9422625b39e 100644
> --- a/list-objects.c
> +++ b/list-objects.c
> @@ -416,22 +416,7 @@ static void do_traverse(struct traversal_context *ctx)
>  	strbuf_release(&csp);
>  }
>  
> -void traverse_commit_list(struct rev_info *revs,
> -			  show_commit_fn show_commit,
> -			  show_object_fn show_object,
> -			  void *show_data)
> -{
> -	struct traversal_context ctx;
> -	ctx.revs = revs;
> -	ctx.show_commit = show_commit;
> -	ctx.show_object = show_object;
> -	ctx.show_data = show_data;
> -	ctx.filter = NULL;
> -	do_traverse(&ctx);
> -}
> -
>  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,
> @@ -444,7 +429,13 @@ void traverse_commit_list_filtered(
>  	ctx.show_object = show_object;
>  	ctx.show_commit = show_commit;
>  	ctx.show_data = show_data;
> -	ctx.filter = list_objects_filter__init(omitted, filter_options);
> +	if (revs->filter)
> +		ctx.filter = list_objects_filter__init(omitted, revs->filter);
> +	else
> +		ctx.filter = NULL;
> +
>  	do_traverse(&ctx);
> -	list_objects_filter__free(ctx.filter);
> +
> +	if (ctx.filter)
> +		list_objects_filter__free(ctx.filter);
>  }
> diff --git a/list-objects.h b/list-objects.h
> index a952680e466..9eaf4de8449 100644
> --- a/list-objects.h
> +++ b/list-objects.h
> @@ -7,7 +7,6 @@ struct rev_info;
>  
>  typedef void (*show_commit_fn)(struct commit *, void *);
>  typedef void (*show_object_fn)(struct object *, const char *, void *);
> -void traverse_commit_list(struct rev_info *, show_commit_fn, show_object_fn, void *);
>  
>  typedef void (*show_edge_fn)(struct commit *);
>  void mark_edges_uninteresting(struct rev_info *revs,
> @@ -18,11 +17,20 @@ 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);
>  
> +static inline void traverse_commit_list(
> +	struct rev_info *revs,
> +	show_commit_fn show_commit,
> +	show_object_fn show_object,
> +	void *show_data)
> +{
> +	traverse_commit_list_filtered(revs, show_commit,
> +				      show_object, show_data, NULL);
> +}
> +
>  #endif /* LIST_OBJECTS_H */
> diff --git a/pack-bitmap.c b/pack-bitmap.c
> index 613f2797cdf..cbefaedbf43 100644
> --- a/pack-bitmap.c
> +++ b/pack-bitmap.c
> @@ -822,9 +822,9 @@ static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
>  		show_data.bitmap_git = bitmap_git;
>  		show_data.base = base;
>  
> -		traverse_commit_list_filtered(revs->filter, revs,
> -					      show_commit, show_object,
> -					      &show_data, NULL);
> +		traverse_commit_list(revs,
> +				     show_commit, show_object,
> +				     &show_data);
>  
>  		revs->include_check = NULL;
>  		revs->include_check_obj = NULL;
diff mbox series

Patch

diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 57f2cf49696..0432ae1e499 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -3778,9 +3778,9 @@  static void get_object_list(int ac, const char **av)
 
 	if (!fn_show_object)
 		fn_show_object = show_object;
-	traverse_commit_list_filtered(revs.filter, &revs,
-				      show_commit, fn_show_object, NULL,
-				      NULL);
+	traverse_commit_list(&revs,
+			     show_commit, fn_show_object,
+			     NULL);
 
 	if (unpack_unreachable_expiration) {
 		revs.ignore_missing_links = 1;
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 556e78aebb9..3ab727817fd 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -733,7 +733,7 @@  int cmd_rev_list(int argc, const char **argv, const char *prefix)
 		oidset_init(&missing_objects, DEFAULT_OIDSET_SIZE);
 
 	traverse_commit_list_filtered(
-		revs.filter, &revs, show_commit, show_object, &info,
+		&revs, show_commit, show_object, &info,
 		(arg_print_omitted ? &omitted_objects : NULL));
 
 	if (arg_print_omitted) {
diff --git a/list-objects.c b/list-objects.c
index 2f623f82115..9422625b39e 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -416,22 +416,7 @@  static void do_traverse(struct traversal_context *ctx)
 	strbuf_release(&csp);
 }
 
-void traverse_commit_list(struct rev_info *revs,
-			  show_commit_fn show_commit,
-			  show_object_fn show_object,
-			  void *show_data)
-{
-	struct traversal_context ctx;
-	ctx.revs = revs;
-	ctx.show_commit = show_commit;
-	ctx.show_object = show_object;
-	ctx.show_data = show_data;
-	ctx.filter = NULL;
-	do_traverse(&ctx);
-}
-
 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,
@@ -444,7 +429,13 @@  void traverse_commit_list_filtered(
 	ctx.show_object = show_object;
 	ctx.show_commit = show_commit;
 	ctx.show_data = show_data;
-	ctx.filter = list_objects_filter__init(omitted, filter_options);
+	if (revs->filter)
+		ctx.filter = list_objects_filter__init(omitted, revs->filter);
+	else
+		ctx.filter = NULL;
+
 	do_traverse(&ctx);
-	list_objects_filter__free(ctx.filter);
+
+	if (ctx.filter)
+		list_objects_filter__free(ctx.filter);
 }
diff --git a/list-objects.h b/list-objects.h
index a952680e466..9eaf4de8449 100644
--- a/list-objects.h
+++ b/list-objects.h
@@ -7,7 +7,6 @@  struct rev_info;
 
 typedef void (*show_commit_fn)(struct commit *, void *);
 typedef void (*show_object_fn)(struct object *, const char *, void *);
-void traverse_commit_list(struct rev_info *, show_commit_fn, show_object_fn, void *);
 
 typedef void (*show_edge_fn)(struct commit *);
 void mark_edges_uninteresting(struct rev_info *revs,
@@ -18,11 +17,20 @@  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);
 
+static inline void traverse_commit_list(
+	struct rev_info *revs,
+	show_commit_fn show_commit,
+	show_object_fn show_object,
+	void *show_data)
+{
+	traverse_commit_list_filtered(revs, show_commit,
+				      show_object, show_data, NULL);
+}
+
 #endif /* LIST_OBJECTS_H */
diff --git a/pack-bitmap.c b/pack-bitmap.c
index 613f2797cdf..cbefaedbf43 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -822,9 +822,9 @@  static struct bitmap *find_objects(struct bitmap_index *bitmap_git,
 		show_data.bitmap_git = bitmap_git;
 		show_data.base = base;
 
-		traverse_commit_list_filtered(revs->filter, revs,
-					      show_commit, show_object,
-					      &show_data, NULL);
+		traverse_commit_list(revs,
+				     show_commit, show_object,
+				     &show_data);
 
 		revs->include_check = NULL;
 		revs->include_check_obj = NULL;