From 1711bc23c0ab6ff4a51bf948c703c81073dd3475 Mon Sep 17 00:00:00 2001 From: flexagoon <25misha52@gmail.com> Date: Thu, 23 Jan 2025 16:05:47 +0300 Subject: [PATCH] git_config: prefer XDG config location Currently, repo ignores the XDG path for the git config file, and creates a new one in the user's home directory. This commit changes the behavior to prefer the XDG path if it exists, which matches git behavior and avoids littering the home directory. Bug: 40012443 Change-Id: Icd3ec6db6b0832f47417bbe98ff9461306b51297 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/448385 Tested-by: lmaor xenix <25misha52@gmail.com> Reviewed-by: Mike Frysinger --- git_config.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/git_config.py b/git_config.py index 68016fff..14c4c11a 100644 --- a/git_config.py +++ b/git_config.py @@ -90,6 +90,20 @@ class GitConfig: @staticmethod def _getUserConfig(): + """Get the user-specific config file. + + Prefers the XDG config location if available, with fallback to + ~/.gitconfig + + This matches git behavior: + https://git-scm.com/docs/git-config#FILES + """ + xdg_config_home = os.getenv( + "XDG_CONFIG_HOME", os.path.expanduser("~/.config") + ) + xdg_config_file = os.path.join(xdg_config_home, "git", "config") + if os.path.exists(xdg_config_file): + return xdg_config_file return os.path.expanduser("~/.gitconfig") @classmethod