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

Re: [PATCH v7 03/12] for-each-ref: change comment in ref_sort

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 12, 2015, 20:27 UTC
Message-ID
<xmqqh9qcd653.fsf@gitster.dls.corp.google.com>
In-Reply-To
<CAP8UFD3nsxX0XEVwxdMBRR8OQDu=ary6Bm2AD7wprAU0BC8tXA@mail.gmail.com>
Christian Couder <christian.couder@gmail.com> writes:
> I think it is needed later when "struct ref_sort" is moved into
> ref-filter.h, because then the used_atom[] array is not moved.

Now I am confused. used_atom[] is the mechanism we use to give a small integer to each atom used in the %(placeholder) string, so that we do not have to refer to them as "placeholder" string and we do not have to call !strcmp() to compare for equality. How can a field in ref_sort refer to it internally if used_atom[] is not visible?

Indeed, ref-filter.c after the series does have used_atom[] and get_ref_atom_value() does use atom to index into it. So these two lines do not make much sense to me. I am puzzled.

If by "moved" you are referring to the fact that the structure and its fields are exposed to the callers of the API while the implementation detail of the mechanism to give short integer to each used atom is not exposed to them, then I do agree that the comment to the structure field as the external API definition should not talk about used_atom[] array.

Perhaps in 03/12, you can stop talking about the implementation (i.e. the value is used to index into used_atom[] to get to the original string) and instead start talking about what the value means to the callers (that are still internal to for-each-ref implementation), to make things better.

Having said that, I am not sure if there is a sensible description for that field if you avoid exposing the implementation detail.

You would probably want to start by asking what that value means. For (evantual) external callers, the number is what they get from parse_ref_filter_atom(); calling that function is the only way they can get an appropriate value to stuff in the field, and parse_opt_ref_sorting() is the most likely function external callers use to make that happen.

"The number internally used to represent an attribute of a ref used when sorting the set of refs" would be one way to say what it is without exposing the implementation detail to the readers.

But does that help anybody? I doubt it. It is mouthful for external users, and it is not concrete enough for implementors.

So either
 - treat ref-filter.h as information for API users, and not talk
   about what it means at all, or
 - treat ref-filter.h as information for both API users and API
   implementors, and describe it as an index into used_atom[],
   i.e. do not change anything.

I'd say the latter is a more sensible way to go. I think it is also OK to change this comment to "index into used_atom array (internal)" when ref-filter.h is created as an external API definition.

Previous: Christian CouderNext: karthik nayak
Message 10 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.