salt/fix-failed-to-stat-root-.gitconfig-issue-on-gitfs-bs.patch
Yeray Gutiérrez Cedrés fec55dd5d1 - Fix error to stat '/root/.gitconfig' on gitfs
(bsc#1230944) (bsc#1234881)
- Added:
  * fix-failed-to-stat-root-.gitconfig-issue-on-gitfs-bs.patch

OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=270
2025-01-29 10:58:48 +00:00

74 lines
2.9 KiB
Diff

From 0ef67b3a7ce03335f1bfc6545f851897e11f5795 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?=
<psuarezhernandez@suse.com>
Date: Wed, 29 Jan 2025 10:08:28 +0000
Subject: [PATCH] Fix failed to stat '/root/.gitconfig' issue on gitfs
(bsc#1230944) (bsc#1234881) (#699)
* Fix failed to stat '/root/.gitconfig' issue on gitfs (bsc#1230944) (bsc#1234881)
This commit ensures the right HOME value is set during Pygit2 remote
initialization, otherwise there are chances that it gets a wrong value
depending on the execution stack.
* Add changelog entry file
* Add test_checkout_pygit2_with_home_env_unset unit test
---
changelog/64121.fixed.md | 1 +
salt/utils/gitfs.py | 9 +++++----
tests/pytests/unit/utils/test_gitfs.py | 1 -
3 files changed, 6 insertions(+), 5 deletions(-)
create mode 100644 changelog/64121.fixed.md
diff --git a/changelog/64121.fixed.md b/changelog/64121.fixed.md
new file mode 100644
index 0000000000..e78bbd5b7f
--- /dev/null
+++ b/changelog/64121.fixed.md
@@ -0,0 +1 @@
+Ensure the right HOME environment value is set during Pygit2 remote initialization.
diff --git a/salt/utils/gitfs.py b/salt/utils/gitfs.py
index 58fa611db8..6f691f3869 100644
--- a/salt/utils/gitfs.py
+++ b/salt/utils/gitfs.py
@@ -1889,7 +1889,12 @@ class Pygit2(GitProvider):
"""
# https://github.com/libgit2/pygit2/issues/339
# https://github.com/libgit2/libgit2/issues/2122
+ # https://github.com/saltstack/salt/issues/64121
home = os.path.expanduser("~")
+ if "HOME" not in os.environ:
+ # Make sure $HOME env variable is set to prevent
+ # _pygit2.GitError: error loading known_hosts in some libgit2 versions.
+ os.environ["HOME"] = home
pygit2.settings.search_path[pygit2.GIT_CONFIG_LEVEL_GLOBAL] = home
new = False
if not os.listdir(self._cachedir):
@@ -1994,10 +1999,6 @@ class Pygit2(GitProvider):
# pruning only available in pygit2 >= 0.26.2
pass
try:
- # Make sure $HOME env variable is set to prevent
- # _pygit2.GitError: error loading known_hosts in some libgit2 versions.
- if "HOME" not in os.environ:
- os.environ["HOME"] = salt.syspaths.HOME_DIR
fetch_results = origin.fetch(**fetch_kwargs)
except GitError as exc: # pylint: disable=broad-except
exc_str = get_error_message(exc).lower()
diff --git a/tests/pytests/unit/utils/test_gitfs.py b/tests/pytests/unit/utils/test_gitfs.py
index bd7d74cb2b..3c4a85a856 100644
--- a/tests/pytests/unit/utils/test_gitfs.py
+++ b/tests/pytests/unit/utils/test_gitfs.py
@@ -251,7 +251,6 @@ def test_checkout_pygit2_with_home_env_unset(_prepare_provider):
with patched_environ(__cleanup__=["HOME"]):
assert "HOME" not in os.environ
provider.init_remote()
- provider.fetch()
assert "HOME" in os.environ
--
2.48.1