From 753e2da34721f72163d08d24308542209f4c70aa Mon Sep 17 00:00:00 2001 From: Gordon Marx Date: Thu, 22 May 2025 11:51:26 -0400 Subject: [PATCH 1/2] completely remove 'is_cygwin_git' and use sys.platform instead --- git/cmd.py | 3 +- git/util.py | 84 ----------------------------------------------------- 2 files changed, 1 insertion(+), 86 deletions(-) diff --git a/git/cmd.py b/git/cmd.py index 2048a43fa..2d5ed9bed 100644 --- a/git/cmd.py +++ b/git/cmd.py @@ -32,7 +32,6 @@ from git.util import ( cygpath, expand_path, - is_cygwin_git, patch_env, remove_password_if_present, stream_copy, @@ -661,7 +660,7 @@ def refresh(cls, path: Union[None, PathLike] = None) -> bool: @classmethod def is_cygwin(cls) -> bool: - return is_cygwin_git(cls.GIT_PYTHON_GIT_EXECUTABLE) + return cls.GIT_PYTHON_GIT_EXECUTABLE is not None and sys.platform == "cygwin" @overload @classmethod diff --git a/git/util.py b/git/util.py index 9e8ac821d..118288edf 100644 --- a/git/util.py +++ b/git/util.py @@ -96,7 +96,6 @@ Files_TD, Has_id_attribute, HSH_TD, - Literal, PathLike, Protocol, SupportsIndex, @@ -344,44 +343,6 @@ def _get_exe_extensions() -> Sequence[str]: return () -def py_where(program: str, path: Optional[PathLike] = None) -> List[str]: - """Perform a path search to assist :func:`is_cygwin_git`. - - This is not robust for general use. It is an implementation detail of - :func:`is_cygwin_git`. When a search following all shell rules is needed, - :func:`shutil.which` can be used instead. - - :note: - Neither this function nor :func:`shutil.which` will predict the effect of an - executable search on a native Windows system due to a :class:`subprocess.Popen` - call without ``shell=True``, because shell and non-shell executable search on - Windows differ considerably. - """ - # From: http://stackoverflow.com/a/377028/548792 - winprog_exts = _get_exe_extensions() - - def is_exec(fpath: str) -> bool: - return ( - osp.isfile(fpath) - and os.access(fpath, os.X_OK) - and ( - sys.platform != "win32" or not winprog_exts or any(fpath.upper().endswith(ext) for ext in winprog_exts) - ) - ) - - progs = [] - if not path: - path = os.environ["PATH"] - for folder in str(path).split(os.pathsep): - folder = folder.strip('"') - if folder: - exe_path = osp.join(folder, program) - for f in [exe_path] + ["%s%s" % (exe_path, e) for e in winprog_exts]: - if is_exec(f): - progs.append(f) - return progs - - def _cygexpath(drive: Optional[str], path: str) -> str: if osp.isabs(path) and not drive: # Invoked from `cygpath()` directly with `D:Apps\123`? @@ -447,51 +408,6 @@ def decygpath(path: PathLike) -> str: return path.replace("/", "\\") -#: Store boolean flags denoting if a specific Git executable -#: is from a Cygwin installation (since `cache_lru()` unsupported on PY2). -_is_cygwin_cache: Dict[str, Optional[bool]] = {} - - -def _is_cygwin_git(git_executable: str) -> bool: - is_cygwin = _is_cygwin_cache.get(git_executable) # type: Optional[bool] - if is_cygwin is None: - is_cygwin = False - try: - git_dir = osp.dirname(git_executable) - if not git_dir: - res = py_where(git_executable) - git_dir = osp.dirname(res[0]) if res else "" - - # Just a name given, not a real path. - uname_cmd = osp.join(git_dir, "uname") - process = subprocess.Popen([uname_cmd], stdout=subprocess.PIPE, universal_newlines=True) - uname_out, _ = process.communicate() - # retcode = process.poll() - is_cygwin = "CYGWIN" in uname_out - except Exception as ex: - _logger.debug("Failed checking if running in CYGWIN due to: %r", ex) - _is_cygwin_cache[git_executable] = is_cygwin - - return is_cygwin - - -@overload -def is_cygwin_git(git_executable: None) -> Literal[False]: ... - - -@overload -def is_cygwin_git(git_executable: PathLike) -> bool: ... - - -def is_cygwin_git(git_executable: Union[None, PathLike]) -> bool: - if sys.platform == "win32": # TODO: See if we can use `sys.platform != "cygwin"`. - return False - elif git_executable is None: - return False - else: - return _is_cygwin_git(str(git_executable)) - - def get_user_id() -> str: """:return: String identifying the currently active system user as ``name@node``""" return "%s@%s" % (getpass.getuser(), platform.node()) From cc3d5d87f9a052eeaa11bbf36dd38119b2025b7c Mon Sep 17 00:00:00 2001 From: Gordon Marx Date: Fri, 23 May 2025 07:24:43 -0400 Subject: [PATCH 2/2] add self to AUTHORS, add Emacs tempfiles to .gitignore --- .gitignore | 2 ++ AUTHORS | 1 + 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index d85569405..eab294a65 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ __pycache__/ # Transient editor files *.swp *~ +\#*# +.#*# # Editor configuration nbproject diff --git a/AUTHORS b/AUTHORS index 45b14c961..b57113edd 100644 --- a/AUTHORS +++ b/AUTHORS @@ -55,5 +55,6 @@ Contributors are: -Eliah Kagan -Ethan Lin -Jonas Scharpf +-Gordon Marx Portions derived from other open source works and are clearly marked. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy