@@ -457,24 +457,23 @@ def _is_cygwin_git(git_executable: str) -> bool:
457
457
if is_cygwin is None :
458
458
is_cygwin = False
459
459
try :
460
- git_cmd = pathlib .Path (git_executable )
461
- git_dir = git_cmd .parent
462
-
460
+ git_dir = osp .dirname (git_executable )
463
461
if not git_dir :
464
462
res = py_where (git_executable )
465
- git_dir = pathlib . Path (res [0 ]). parent if res else ""
463
+ git_dir = osp . dirname (res [0 ]) if res else ""
466
464
467
- # If it's a cygwin git, it'll have cygwin in the output of `strings git`
468
- strings_cmd = pathlib . Path (git_dir , "strings " )
465
+ # Just a name given, not a real path.
466
+ uname_cmd = osp . join (git_dir , "uname " )
469
467
470
- if not (pathlib .Path (strings_cmd ).is_file () and os .access (strings_cmd , os .X_OK )):
471
- _logger .debug (f"Failed checking if running in CYGWIN: { strings_cmd } is not an executable" )
472
- _is_cygwin_cache [git_executable ] = False
468
+ if not (pathlib .Path (uname_cmd ).is_file () and os .access (uname_cmd , os .X_OK )):
469
+ _logger .debug (f"Failed checking if running in CYGWIN: { uname_cmd } is not an executable" )
470
+ _is_cygwin_cache [git_executable ] = is_cygwin
473
471
return is_cygwin
474
472
475
- process = subprocess .Popen ([strings_cmd , git_cmd ], stdout = subprocess .PIPE , text = True )
476
- strings_output , _ = process .communicate ()
477
- is_cygwin = any (x for x in strings_output if "cygwin" in x .lower ())
473
+ process = subprocess .Popen ([uname_cmd ], stdout = subprocess .PIPE , universal_newlines = True )
474
+ uname_out , _ = process .communicate ()
475
+ # retcode = process.poll()
476
+ is_cygwin = "CYGWIN" in uname_out
478
477
except Exception as ex :
479
478
_logger .debug ("Failed checking if running in CYGWIN due to: %r" , ex )
480
479
_is_cygwin_cache [git_executable ] = is_cygwin
0 commit comments