Enable use of REPO_CONFIG_DIR to customize .repoconfig location

For use cases with multiple instances of repo, eg some CI environments.

Bug: https://crbug.com/gerrit/15803
Change-Id: I65c1cfc8f6a98adfeb5efefc7ac6b45bf8e134de
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/356719
Tested-by: Gavin Mak <gavinmak@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
Gavin Mak 2023-01-26 23:27:51 +00:00
parent c3d61ec252
commit 7e3b65beb7
3 changed files with 15 additions and 7 deletions

View File

@ -243,7 +243,9 @@ The `[branch]` settings are updated by `repo start` and `git branch`.
## ~/ dotconfig layout ## ~/ dotconfig layout
Repo will create & maintain a few files in the user's home directory. Repo will create & maintain a few files under the `.repoconfig/` directory.
This is placed in the user's home directory by default but can be changed by
setting `REPO_CONFIG_DIR`.
* `.repoconfig/`: Repo's per-user directory for all random config files/state. * `.repoconfig/`: Repo's per-user directory for all random config files/state.
* `.repoconfig/config`: Per-user settings using [git-config] file format. * `.repoconfig/config`: Per-user settings using [git-config] file format.

View File

@ -69,8 +69,6 @@ def _key(name):
class GitConfig(object): class GitConfig(object):
_ForUser = None _ForUser = None
_USER_CONFIG = '~/.gitconfig'
_ForSystem = None _ForSystem = None
_SYSTEM_CONFIG = '/etc/gitconfig' _SYSTEM_CONFIG = '/etc/gitconfig'
@ -83,9 +81,13 @@ class GitConfig(object):
@classmethod @classmethod
def ForUser(cls): def ForUser(cls):
if cls._ForUser is None: if cls._ForUser is None:
cls._ForUser = cls(configfile=os.path.expanduser(cls._USER_CONFIG)) cls._ForUser = cls(configfile=cls._getUserConfig())
return cls._ForUser return cls._ForUser
@staticmethod
def _getUserConfig():
return os.path.expanduser('~/.gitconfig')
@classmethod @classmethod
def ForRepository(cls, gitdir, defaults=None): def ForRepository(cls, gitdir, defaults=None):
return cls(configfile=os.path.join(gitdir, 'config'), return cls(configfile=os.path.join(gitdir, 'config'),
@ -415,7 +417,10 @@ class GitConfig(object):
class RepoConfig(GitConfig): class RepoConfig(GitConfig):
"""User settings for repo itself.""" """User settings for repo itself."""
_USER_CONFIG = '~/.repoconfig/config' @staticmethod
def _getUserConfig():
repo_config_dir = os.getenv('REPO_CONFIG_DIR', os.path.expanduser('~'))
return os.path.join(repo_config_dir, '.repoconfig/config')
class RefSpec(object): class RefSpec(object):

5
repo
View File

@ -149,7 +149,7 @@ if not REPO_REV:
BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue' BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue'
# increment this whenever we make important changes to this script # increment this whenever we make important changes to this script
VERSION = (2, 30) VERSION = (2, 32)
# increment this if the MAINTAINER_KEYS block is modified # increment this if the MAINTAINER_KEYS block is modified
KEYRING_VERSION = (2, 3) KEYRING_VERSION = (2, 3)
@ -265,7 +265,8 @@ else:
urllib.error = urllib2 urllib.error = urllib2
home_dot_repo = os.path.expanduser('~/.repoconfig') repo_config_dir = os.getenv('REPO_CONFIG_DIR', os.path.expanduser('~'))
home_dot_repo = os.path.join(repo_config_dir, '.repoconfig')
gpg_dir = os.path.join(home_dot_repo, 'gnupg') gpg_dir = os.path.join(home_dot_repo, 'gnupg')