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

Re: git bug report

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 8, 2023, 17:07 UTC
Message-ID
<xmqqbkfh8nu3.fsf@gitster.g>
In-Reply-To
<MW2PR12MB25558D1886C4AA2A95A5FC618709A@MW2PR12MB2555.namprd12.prod.outlook.com>
Paul Watson <pwatson2@wellmed.net> writes:
> 9:43:55.45 2023-08-04  C:\src\t\scripts>TYPE .\t1.txt
> this is t1.txt
Show 8 quoted lines
> 9:43:57.92 2023-08-04  C:\src\t\scripts>TYPE .\t2.txt
> this is t2.txt
>
> 9:43:58.04 2023-08-04  C:\src\t\scripts>"C:\Program Files\Git\cmd\git.exe" diff --exit-code --no-index  --ignore-all-space  --shortstat  .\t1.txt .\t2.txt
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> 9:43:58.14 2023-08-04  C:\src\t\scripts>ECHO %ERRORLEVEL%
> 0

This is not specific to Windows port and it can be reproduced on a random Linux box.

    $ echo one >1
    $ echo two >2
    $ git diff --no-index --shortstat 1 2; echo "<<$?>>"
     1 file changed, 1 insertion(+), 1 deletion(-)
    <<1>>
    $ git diff --no-index --shortstat -w 1 2; echo "<<$?>>"
     1 file changed, 1 insertion(+), 1 deletion(-)
    <<0>>

Note that I omitted "--exit-code" in the above reproduction, as it is always used in the no-index mode. There seems to be interaction with "-w" and not using "-p", as this is not limited to "--shortstat".

    $ git diff --no-index -w --stat 1 2; echo "<<$?>>"
     1 => 2 | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    <<0>>
    $ git diff --no-index -w --numstat 1 2; echo "<<$?>>"
    1	1	1 => 2
    <<0>>

All of the above that exits with 0 status will exit with 1 when -p is added to the command line.

Also, this is not limited to the no-index mode.
    $ echo one >1
    $ git add 1
    $ echo two >1
    $ git diff --exit-code --numstat 1; echo "<<$?>>"
    1	1	1
    <<1>>
    $ git diff --exit-code --numstat -w 1; echo "<<$?>>"
    1	1	1
    <<0>>
So the minimum reproduction seems to be
  * the diff machinery is asked to do --exit-code (no-index
    implicitly does it)
  * -w is used
  * -p is *not* used
  * to compare two different files.
Thanks for a bug report.
Patches welcome ;-)
Previous: rsbecker@nexbridge.comNext: Junio C Hamano
Message 8 of 36 in “git bug report”
  1. Paul WatsonAug 4, 2023
  2. rsbecker@nexbridge.comAug 4, 2023
  3. Paul WatsonAug 4, 2023
  4. rsbecker@nexbridge.comAug 4, 2023
  5. Paul WatsonAug 7, 2023
  6. Paul WatsonAug 8, 2023
  7. rsbecker@nexbridge.comAug 8, 2023
  8. Junio C HamanoAug 8, 2023
  9. diff: tighten interaction between -w and --exit-codeJunio C Hamano, Aug 16, 2023
  10. Jeff KingAug 17, 2023
  11. Junio C HamanoAug 17, 2023
  12. Jeff KingAug 17, 2023
  13. Junio C HamanoAug 17, 2023
  14. 0/5 fix interactions with "-w" and "--exit-code"Junio C Hamano, Aug 17, 2023
  15. 1/5 diff: --dirstat leakfixJunio C Hamano, Aug 17, 2023
  16. 2/5 diff: move the fallback "--exit-code" code downJunio C Hamano, Aug 17, 2023
  17. 3/5 diff: mode-only change should be noticed by "--patch -w --exit-code"Junio C Hamano, Aug 17, 2023
  18. Junio C HamanoAug 18, 2023
  19. 4/5 diff: teach "--stat -w --exit-code" to notice differencesJunio C Hamano, Aug 17, 2023
  20. 5/5 diff: teach "--name-status" and friends to honor "--exit-code -w"Junio C Hamano, Aug 17, 2023
  21. Junio C HamanoAug 17, 2023
  22. 0/5 fix interactions with "-w" and "--exit-code"Junio C Hamano, Aug 18, 2023
  23. 2/5 diff: mode-only change should be noticed by "--patch -w --exit-code"Junio C Hamano, Aug 18, 2023
  24. 3/5 diff: teach "--stat -w --exit-code" to notice differencesJunio C Hamano, Aug 18, 2023
  25. Jeff KingAug 21, 2023
  26. 4/5 t4040: remove test that succeeded for a wrong reasonJunio C Hamano, Aug 18, 2023
  27. 1/5 diff: move the fallback "--exit-code" code downJunio C Hamano, Aug 18, 2023
  28. Jeff KingAug 21, 2023
  29. 5/5 diff: the -w option breaks --exit-code for --raw and other output modesJunio C Hamano, Aug 18, 2023
  30. Jeff KingAug 21, 2023
  31. Jeff KingAug 21, 2023
  32. Jeff KingAug 21, 2023
  33. Junio C HamanoAug 21, 2023
  34. Junio C HamanoAug 21, 2023
  35. Jeff KingAug 22, 2023
  36. Jeff KingAug 21, 2023

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.