Thread (2 messages) 2 messages, 2 authors, 2026-02-28

Re: [PATCH v11] setup: improve error diagnosis for invalid .git files

From: Tian Yuchen <hidden>
Date: 2026-02-28 04:38:58

Hi Junio,

Thanks for pushing back on my previous suggestion.
It sounds like saying "oh, this is too hard, let's punt and roll all
failures from stat() into 'nothing there, move on'", which is how
the code used to work before this patch X-<.
Yeah, that's why I said this idea was pretty dumb. XD

Regarding your question about how 'stat()' gets into the picture, I 
tried GDB debugging and simulated Windows behavior by 'GIT_DIR=nul' (I'm 
NOT sure if it's correct). Here is the back trace caught:

(gdb) print path
$1 = 0x555555a86dd0 "nul"
(gdb) bt
#0  read_gitfile_gently (path=0x555555a86dd0 "nul", return_error_code=0x0)
     at setup.c:936
#1  0x000055555589dea1 in setup_explicit_git_dir (
     gitdirenv=0x555555a86dd0 "nul", cwd=0x555555a58070 <cwd>,
     repo_fmt=0x7fffffffcbe0, nongit_ok=0x7fffffffccc4) at setup.c:1107
#2  0x000055555589fd53 in setup_git_directory_gently 
(nongit_ok=0x7fffffffccc4)
     at setup.c:1867
#3  0x00005555555c1383 in cmd_diff (argc=4, argv=0x555555a86ce0, 
prefix=0x0,
     repo=0x0) at builtin/diff.c:458
#4  0x0000555555575e30 in run_builtin (p=0x555555a48368 <commands+840>,
     argc=4, argv=0x555555a86ce0, repo=0x555555a7bdc0 <the_repo>) at 
git.c:506
#5  0x0000555555576354 in handle_builtin (args=0x7fffffffdc10) at git.c:780
#6  0x000055555557667e in run_argv (args=0x7fffffffdc10) at git.c:863
#7  0x0000555555576b44 in cmd_main (argc=4, argv=0x7fffffffdda0) at 
git.c:985
#8  0x00005555556a73bf in main (argc=5, argv=0x7fffffffdd98) at 
common-main.c:9

Sorry it might be a bit messy. It turns out that 
'setup_explicit_git_dir()' calls 'read_gitfile_gently()' right away to 
check whether GIT_DIR is actually a gitfile, right?

Since stat("nul") fails on windows, STAT_FAILED was caught and 
immediately triggered die(), blowing up corresponding CI tests.

Still, I don't know Windows well. These thoughts are just to stimulate 
discussions. ( ´_ゝ`)

Thanks,

Yuchen

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help