git/list[1] front-page[2] threads[3] people[4] search[5] about
wed 2026-10-07 17:26 UTC

Re: [PATCH 2/2] help: ensure &keys_uniq follows sort -u

From
Amisha Chhajed <amishhhaaaa@gmail.com>
Date
Feb 12, 2026, 21:29 UTC
Message-ID
<CAPvEtrenMBMFaMxcCR4VwoyMFU-_Z+bqq5nJaWv5eyn3HRutEA@mail.gmail.com>
In-Reply-To
<xmqqh5rlohsm.fsf@gitster.g>
On Fri, 13 Feb 2026 at 01:28, Junio C Hamano <gitster@pobox.com> wrote:
Show 24 quoted lines
>
> Amisha Chhajed <amishhhaaaa@gmail.com> writes:
>
> > From: Amisha Chhajed <136238836+amishhaa@users.noreply.github.com>
> >
> > uniqueness operation of &keys_uniq depends on the sort operation executed
> > for &keys this might introduce regressions in future when the logic of
> > forming &keys_uniq from &keys is changed.
> >
> > add string_list_sort_u operation for &keys_uniq after the processing of
> > &keys so it follows the expected sort -u behaviour.
>
> I am not sure the above reasoning is sound.  With the original code,
> we
>
>  - prepare empty keys_uniq
>  - collect keys
>  - sort keys
>  - iterate over keys
>    - add either the whole "section[.subsection].key" or "section" to keys_uniq
>
> before we call remove_duplicates.  keys_uniq would have duplicates,
> but because keys is sorted upfront, wouldn't the contents of
> keys_uniq be collected in sorted order anyway?

No, there is a case where it would not be sorted(keys_uniq won't be sorted even though keys is), more details on the case[0] and steps to reproduce[1]. [0] https://lore.kernel.org/git/CAPvEtrfEZXHxcDf=z60ODfUA8cS81rhF1y7KEZApEBby7aCa1A@mail.gmail.com/ [1] https://lore.kernel.org/git/20260212041017.91370-1-amishhhaaaa@gmail.com/T/#m64880c5cd0d36e35bc78692757cf206b13496aea only reason it is not causing a problem now is because we do not have this edge case appearing git documentation(from where the keys are built) but if someday a case like this appears there then it would cause problems.

Show 7 quoted lines
> This is not a performance critical part of the system, so it is OK
> as a future-proof measure to sort keys_uniq immediately before we
> start doing something that we _care_ about its sortedness (e.g.,
> presenting the final output to the user), even if keys_uniq is known
> to be already sorted with the current code.  Using sort_u here would
> allow us not to worry about how keys_uniq is constructed in that
> ugly loop.

Agreed, we do not need to sort it twice if we decouple CONFIG_HUMAN from the rest of the switch case, that is a great way to go about it, thank you!. I will work on it.

Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 31 in “clean leftover calls to string_list_remove_duplicates”
  1. 0/2 clean leftover calls to string_list_remove_duplicatesAmisha Chhajed, Feb 12, 2026
  2. 1/2 sparse-checkout: use string_list_sort_uAmisha Chhajed, Feb 12, 2026
  3. 2/2 help: ensure &keys_uniq follows sort -uAmisha Chhajed, Feb 12, 2026
  4. Junio C HamanoFeb 12, 2026
  5. Junio C HamanoFeb 12, 2026
  6. Amisha ChhajedFeb 12, 2026
  7. Junio C HamanoFeb 12, 2026
  8. 1/2 sparse-checkout: use string_list_sort_uAmisha Chhajed, Feb 13, 2026
  9. 2/2 help: cleanup the contruction of keys_uniqAmisha Chhajed, Feb 13, 2026
  10. Junio C HamanoFeb 13, 2026
  11. Eric SunshineFeb 13, 2026
  12. Junio C HamanoFeb 13, 2026
  13. 1/2 sparse-checkout: use string_list_sort_uAmisha Chhajed, Feb 21, 2026
  14. 2/2 help: cleanup the contruction of keys_uniqAmisha Chhajed, Feb 21, 2026
  15. Amisha ChhajedFeb 21, 2026
  16. Junio C HamanoFeb 22, 2026
  17. Junio C HamanoFeb 22, 2026
  18. Amisha ChhajedFeb 22, 2026
  19. Junio C HamanoFeb 26, 2026
  20. 0/1 Make keys_uniq stop depending on sort of keys_uniqAmisha Chhajed, Feb 28, 2026
  21. 1/1 help: cleanup the contruction of keys_uniqAmisha Chhajed, Feb 28, 2026
  22. Amisha ChhajedFeb 28, 2026
  23. Junio C HamanoMar 2, 2026
  24. Junio C HamanoMar 2, 2026
  25. help: cleanup the contruction of keys_uniqAmisha Chhajed, Mar 11, 2026
  26. Junio C HamanoMar 11, 2026
  27. Amisha ChhajedMar 11, 2026
  28. Junio C HamanoMar 11, 2026
  29. Eric SunshineMar 11, 2026
  30. Junio C HamanoMar 11, 2026
  31. Eric SunshineMar 11, 2026

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.