git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 11/12] for-each-ref: introduce filter_refs()

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Jun 11, 2015, 17:00 UTC
Message-ID
<vpq1thixjs3.fsf@anie.imag.fr>
In-Reply-To
<1434039003-10928-11-git-send-email-karthik.188@gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
> +	filter_refs(&array, FILTER_REFS_ALL | FILTER_REFS_INCLUDE_BROKEN, &filter);
I think it is more common to have options at the end, so I'd write it as
filter_refs(&array, &filter, FILTER_REFS_ALL | FILTER_REFS_INCLUDE_BROKEN);
(changing the declaration too, obviously)
I really like the way cmd_for_each_ref looks like now.
Show 25 quoted lines
> @@ -905,6 +905,28 @@ void ref_array_clear(struct ref_array *array)
>  	array->nr = array->alloc = 0;
>  }
>  
> +/*
> + * API for filtering a set of refs. Based on the type of refs the user
> + * has requested, we iterate through those refs and apply filters
> + * as per the given ref_filter structure and finally store the
> + * filtered refs in the ref_array structure.
> + */
> +int filter_refs(struct ref_array *array, unsigned int type, struct ref_filter *filter)
> +{
> +	struct ref_filter_cbdata ref_cbdata;
> +
> +	ref_cbdata.array = array;
> +	ref_cbdata.filter = filter;
> +
> +	if (type & (FILTER_REFS_ALL | FILTER_REFS_INCLUDE_BROKEN))
> +		return for_each_rawref(ref_filter_handler, &ref_cbdata);
> +	else if (type & FILTER_REFS_ALL)
> +		return for_each_ref(ref_filter_handler, &ref_cbdata);
> +	else
> +		die("filter_refs: invalid type");
> +	return 0;
> +}

I thought you would make a helper function that would return a pointer to either for_each_rawref or for_each_ref (or another later), but that would probably be overkill.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Previous: Karthik NayakNext: Karthik Nayak
Message 25 of 32 in “Create ref-filter from for-each-ref”
  1. 0/12 Create ref-filter from for-each-refKarthik Nayak, Jun 11, 2015
  2. 01/12 for-each-ref: extract helper functions out of grab_single_ref()Karthik Nayak, Jun 11, 2015
  3. 02/12 for-each-ref: clean up codeKarthik Nayak, Jun 11, 2015
  4. 03/12 for-each-ref: change comment in ref_sortKarthik Nayak, Jun 11, 2015
  5. Junio C HamanoJun 12, 2015
  6. Karthik NayakJun 12, 2015
  7. Junio C HamanoJun 12, 2015
  8. Karthik NayakJun 12, 2015
  9. Christian CouderJun 12, 2015
  10. Junio C HamanoJun 12, 2015
  11. karthik nayakJun 12, 2015
  12. 04/12 for-each-ref: rename 'refinfo' to 'ref_array_item'Karthik Nayak, Jun 11, 2015
  13. 05/12 for-each-ref: introduce new structures for better organisationKarthik Nayak, Jun 11, 2015
  14. Matthieu MoyJun 11, 2015
  15. Karthik NayakJun 11, 2015
  16. Matthieu MoyJun 11, 2015
  17. Karthik NayakJun 11, 2015
  18. Matthieu MoyJun 11, 2015
  19. 06/12 for-each-ref: introduce 'ref_array_clear()'Karthik Nayak, Jun 11, 2015
  20. 07/12 for-each-ref: rename some functions and make them publicKarthik Nayak, Jun 11, 2015
  21. 08/12 for-each-ref: rename variables called sort to sortingKarthik Nayak, Jun 11, 2015
  22. 09/12 ref-filter: add 'ref-filter.h'Karthik Nayak, Jun 11, 2015
  23. 10/12 ref-filter: move code from 'for-each-ref'Karthik Nayak, Jun 11, 2015
  24. 11/12 for-each-ref: introduce filter_refs()Karthik Nayak, Jun 11, 2015
  25. Matthieu MoyJun 11, 2015
  26. Karthik NayakJun 11, 2015
  27. Junio C HamanoJun 12, 2015
  28. 11/12 for-each-ref: introduce filter_refs()Karthik Nayak, Jun 11, 2015
  29. 12/12 ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refnameKarthik Nayak, Jun 11, 2015
  30. Junio C HamanoJun 12, 2015
  31. Karthik NayakJun 12, 2015
  32. Matthieu MoyJun 11, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.