Re: [RFC PATCH v2 11/13] walken: add filtered object walk
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jun 27, 2019, 05:42 UTC
- Message-ID
- <CAPig+cSJLbeVawxRhHwqLEXBr6-3QoaYd+1zF169m5N=kq4J4Q@mail.gmail.com>
- In-Reply-To
- <20190626235032.177551-12-emilyshaffer@google.com>
On Wed, Jun 26, 2019 at 7:51 PM Emily Shaffer <emilyshaffer@google.com> wrote:
Show 15 quoted lines
> Demonstrate how filter specs can be used when performing a revision walk
> of all object types. In this case, tree depth is used. Contributors who
> are following the revision walking tutorial will be encouraged to run
> the revision walk with and without the filter in order to compare the
> number of objects seen in each case.
>
> Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
> ---
> diff --git a/builtin/walken.c b/builtin/walken.c
> @@ -143,6 +144,10 @@ static void walken_show_object(struct object *obj, const char *str, void *buf)
> static void walken_object_walk(struct rev_info *rev)
> {
> + struct list_objects_filter_options filter_options = {};
> +
> + printf("walken_object_walk beginning...\n");Is this debugging code which you accidentally left in? Or is it meant to use trace_printf()? Or something else? If it is a genuine message, should it be localizable?
Show 7 quoted lines
> @@ -157,7 +162,24 @@ static void walken_object_walk(struct rev_info *rev)
> blob_count = 0;
> tree_count = 0;
>
> - traverse_commit_list(rev, walken_show_commit, walken_show_object, NULL);
> + if (1) {
> + /* Unfiltered: */The subject talks about adding a _filtered_ object walk (which is in the 'else' arm), so should this be "if (0)" instead?
Show 16 quoted lines
> + trace_printf(_("Unfiltered object walk.\n"));
> + traverse_commit_list(rev, walken_show_commit,
> + walken_show_object, NULL);
> + } else {
> + trace_printf(_("Filtered object walk with filterspec "
> + "'tree:1'.\n"));
> + /*
> + * We can parse a tree depth of 1 to demonstrate the kind of
> + * filtering that could occur during various operations (see
> + * `git help rev-list` and read the entry on `--filter`).
> + */
> + parse_list_objects_filter(&filter_options, "tree:1");
> +
> + traverse_commit_list_filtered(&filter_options, rev,
> + walken_show_commit, walken_show_object, NULL, NULL);
> + }