From 979d79301da678d305c12e5c4bdee139705fcc14 Mon Sep 17 00:00:00 2001 From: Etienne Cordonnier Date: Thu, 13 Feb 2025 15:44:40 +0100 Subject: [PATCH 1/2] respect GIT_CEILING_DIRECTORIES Fix for https://github.com/pypa/setuptools-scm/issues/1103 When searching for the root-directory of the git repository e.g. with git rev-parse --show-toplevel, git stops the search when reaching $GIT_CEILING_DIRECTORIES. By ignoring this variable, the function _git_toplevel can go above the real git repository (e.g. when packaging a tarball without .git repository), and then runs "git archive" on an unrelated git repository. Signed-off-by: Ross Burton Signed-off-by: Etienne Cordonnier --- src/setuptools_scm/_file_finders/git.py | 1 + src/setuptools_scm/_run_cmd.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/setuptools_scm/_file_finders/git.py b/src/setuptools_scm/_file_finders/git.py index 7b23f886..d9a64387 100644 --- a/src/setuptools_scm/_file_finders/git.py +++ b/src/setuptools_scm/_file_finders/git.py @@ -72,6 +72,7 @@ def _git_ls_files_and_dirs(toplevel: str) -> tuple[set[str], set[str]]: # export-ignore git attribute cmd = ["git", "archive", "--prefix", toplevel + os.path.sep, "HEAD"] + log.info("running %s" % " ".join(str(x) for x in cmd)) proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, cwd=toplevel, stderr=subprocess.DEVNULL ) diff --git a/src/setuptools_scm/_run_cmd.py b/src/setuptools_scm/_run_cmd.py index 42904cfb..619c73e5 100644 --- a/src/setuptools_scm/_run_cmd.py +++ b/src/setuptools_scm/_run_cmd.py @@ -98,7 +98,7 @@ def no_git_env(env: Mapping[str, str]) -> dict[str, str]: k: v for k, v in env.items() if not k.startswith("GIT_") - or k in ("GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND") + or k in ("GIT_CEILING_DIRECTORIES", "GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND") } From 0b82e5d134d6ddf118969319e30db9997f0acd75 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 17:51:43 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/setuptools_scm/_run_cmd.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/setuptools_scm/_run_cmd.py b/src/setuptools_scm/_run_cmd.py index 619c73e5..ef669664 100644 --- a/src/setuptools_scm/_run_cmd.py +++ b/src/setuptools_scm/_run_cmd.py @@ -98,7 +98,8 @@ def no_git_env(env: Mapping[str, str]) -> dict[str, str]: k: v for k, v in env.items() if not k.startswith("GIT_") - or k in ("GIT_CEILING_DIRECTORIES", "GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND") + or k + in ("GIT_CEILING_DIRECTORIES", "GIT_EXEC_PATH", "GIT_SSH", "GIT_SSH_COMMAND") }