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

Re: [PATCH v5 03/10] diff: short help: Correct -S description

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 13, 2025, 04:26 UTC
Message-ID
<xmqqzfiqpj13.fsf@gitster.g>
In-Reply-To
<20250212032657.1807939-4-illia.bobyr@gmail.com>
Illia Bobyr <illia.bobyr@gmail.com> writes:
> `-S` shows changes that modify the number of occurrences of the
> specified string, rather than only those that either completely remove
> it or add it for the first time.
> ---

[jc: title, sign-off, and this should be done outside the main topic are shared with other patches, so I won't repeat them]

Show 13 quoted lines
>  diff.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/diff.h b/diff.h
> index 0a566f..49ece3 100644
> --- a/diff.h
> +++ b/diff.h
> @@ -606,7 +606,7 @@ void diffcore_fix_diff_index(void);
>  "                try unchanged files as candidate for copy detection.\n" \
>  "  -l<n>         limit rename attempts up to <n> paths.\n" \
>  "  -O<file>      reorder diffs according to the <file>.\n" \
> -"  -S<string>    find filepair whose only one side contains the string.\n" \
> +"  -S<string>    find filepair who differ in the number of occurrences of string.\n" \

Given that the initial motivation of -S<block-of-text> was to find "before it wasn't there in that shape, now there it is" [*1*] (and <block-of-text> wasn meant to be something unique in the codebase), the original conveys the intent better, but the updated text describes the actual behaviour more correctly (in other words, the behaviour of the option when a not-so-unique string that may produce multiple hits is given is whatever it happens to do---which is "see the number of occurrences are different").

So this is a good change.
[Foornote]
 *1* The original motivation of "-S<block-of-text>" was to be a
     building block for the tool Linus dreamed in his message
     https://lore.kernel.org/git/Pine.LNX.4.58.0504150753440.7211@ppc970.osdl.org
     that explained why recording renames at the commit time is a
     bad idea.
>  "  --pickaxe-all\n" \
>  "                show all files diff when -S is used and hit is found.\n" \
>  "  -a  --text    treat all files as text.\n"
Previous: Illia BobyrNext: Illia Bobyr
Message 27 of 36 in “Long names for `git log -S` and `git log -G`”
  1. 0/1 Long names for `git log -S` and `git log -G`Illia Bobyr, Feb 6, 2025
  2. 1/1 diff: --patch-{modifies,grep} arg names for -S and -GIllia Bobyr, Feb 6, 2025
  3. Junio C HamanoFeb 6, 2025
  4. Illia BobyrFeb 12, 2025
  5. Junio C HamanoFeb 12, 2025
  6. Junio C HamanoFeb 6, 2025
  7. 0/10 Long names for `git log -S` and `git log -G`Illia Bobyr, Feb 11, 2025
  8. Junio C HamanoFeb 11, 2025
  9. Illia BobyrFeb 12, 2025
  10. 01/10 t/t4209-log-pickaxe: Naming typo: -G takes a regexIllia Bobyr, Feb 11, 2025
  11. 02/10 diff: -G description: Correct copy/paste errorIllia Bobyr, Feb 11, 2025
  12. 03/10 diff: short help: Correct -S descriptionIllia Bobyr, Feb 11, 2025
  13. 04/10 diff: short help: Add -G and --pickaxe-grepIllia Bobyr, Feb 11, 2025
  14. 05/10 docs: gitdiffcore: -G and -S: Use regex/string placeholdersIllia Bobyr, Feb 11, 2025
  15. 06/10 diff: --patch-{grep,modifies} arg names for -G and -SIllia Bobyr, Feb 11, 2025
  16. 07/10 completion: Support --patch-{grep,modifies}Illia Bobyr, Feb 11, 2025
  17. 08/10 diff: test: Use --patch-{grep,modifies} over -G/-SIllia Bobyr, Feb 11, 2025
  18. 09/10 diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}Illia Bobyr, Feb 11, 2025
  19. 10/10 diff: docs: Use --patch-{grep,modifies} over -G/-SIllia Bobyr, Feb 11, 2025
  20. 00/10 Long names for `git log -S` and `git log -G`Illia Bobyr, Feb 12, 2025
  21. 01/10 t/t4209-log-pickaxe: Naming typo: -G takes a regexIllia Bobyr, Feb 12, 2025
  22. Junio C HamanoFeb 13, 2025
  23. 02/10 diff: -G description: Correct copy/paste errorIllia Bobyr, Feb 12, 2025
  24. Junio C HamanoFeb 13, 2025
  25. 04/10 diff: short help: Add -G and --pickaxe-grepIllia Bobyr, Feb 12, 2025
  26. 03/10 diff: short help: Correct -S descriptionIllia Bobyr, Feb 12, 2025
  27. Junio C HamanoFeb 13, 2025
  28. 05/10 docs: gitdiffcore: -G and -S: Use regex/string placeholdersIllia Bobyr, Feb 12, 2025
  29. Junio C HamanoFeb 13, 2025
  30. 06/10 diff: --patch-{grep,modifies} arg names for -G and -SIllia Bobyr, Feb 12, 2025
  31. Junio C HamanoFeb 13, 2025
  32. 07/10 completion: Support --patch-{grep,modifies}Illia Bobyr, Feb 12, 2025
  33. Junio C HamanoFeb 13, 2025
  34. 08/10 diff: test: Use --patch-{grep,modifies} over -G/-SIllia Bobyr, Feb 12, 2025
  35. 09/10 diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}Illia Bobyr, Feb 12, 2025
  36. 10/10 diff: docs: Use --patch-{grep,modifies} over -G/-SIllia Bobyr, Feb 12, 2025

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.