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.