@@ -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