diff options
| author | Gavin Mak <gavinmak@google.com> | 2023-01-26 23:27:51 +0000 |
|---|---|---|
| committer | Gavin Mak <gavinmak@google.com> | 2023-01-28 02:05:52 +0000 |
| commit | 7e3b65beb72ea4cc3ca8bfbd0816413217a520d0 (patch) | |
| tree | 0b53df44ed1644a5878a72dc8613fd160cfc3074 | |
| parent | c3d61ec2529790bb690071e229511cc641cea5ad (diff) | |
| download | git-repo-7e3b65beb72ea4cc3ca8bfbd0816413217a520d0.tar.gz | |
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>
| -rw-r--r-- | docs/internal-fs-layout.md | 4 | ||||
| -rw-r--r-- | git_config.py | 13 | ||||
| -rwxr-xr-x | repo | 5 |
3 files changed, 15 insertions, 7 deletions
diff --git a/docs/internal-fs-layout.md b/docs/internal-fs-layout.md index 8be61782..401ebda1 100644 --- a/docs/internal-fs-layout.md +++ b/docs/internal-fs-layout.md | |||
| @@ -243,7 +243,9 @@ The `[branch]` settings are updated by `repo start` and `git branch`. | |||
| 243 | 243 | ||
| 244 | ## ~/ dotconfig layout | 244 | ## ~/ dotconfig layout |
| 245 | 245 | ||
| 246 | Repo will create & maintain a few files in the user's home directory. | 246 | Repo will create & maintain a few files under the `.repoconfig/` directory. |
| 247 | This is placed in the user's home directory by default but can be changed by | ||
| 248 | setting `REPO_CONFIG_DIR`. | ||
| 247 | 249 | ||
| 248 | * `.repoconfig/`: Repo's per-user directory for all random config files/state. | 250 | * `.repoconfig/`: Repo's per-user directory for all random config files/state. |
| 249 | * `.repoconfig/config`: Per-user settings using [git-config] file format. | 251 | * `.repoconfig/config`: Per-user settings using [git-config] file format. |
diff --git a/git_config.py b/git_config.py index 029beb4d..9ad979ad 100644 --- a/git_config.py +++ b/git_config.py | |||
| @@ -69,8 +69,6 @@ def _key(name): | |||
| 69 | class GitConfig(object): | 69 | class GitConfig(object): |
| 70 | _ForUser = None | 70 | _ForUser = None |
| 71 | 71 | ||
| 72 | _USER_CONFIG = '~/.gitconfig' | ||
| 73 | |||
| 74 | _ForSystem = None | 72 | _ForSystem = None |
| 75 | _SYSTEM_CONFIG = '/etc/gitconfig' | 73 | _SYSTEM_CONFIG = '/etc/gitconfig' |
| 76 | 74 | ||
| @@ -83,9 +81,13 @@ class GitConfig(object): | |||
| 83 | @classmethod | 81 | @classmethod |
| 84 | def ForUser(cls): | 82 | def ForUser(cls): |
| 85 | if cls._ForUser is None: | 83 | if cls._ForUser is None: |
| 86 | cls._ForUser = cls(configfile=os.path.expanduser(cls._USER_CONFIG)) | 84 | cls._ForUser = cls(configfile=cls._getUserConfig()) |
| 87 | return cls._ForUser | 85 | return cls._ForUser |
| 88 | 86 | ||
| 87 | @staticmethod | ||
| 88 | def _getUserConfig(): | ||
| 89 | return os.path.expanduser('~/.gitconfig') | ||
| 90 | |||
| 89 | @classmethod | 91 | @classmethod |
| 90 | def ForRepository(cls, gitdir, defaults=None): | 92 | def ForRepository(cls, gitdir, defaults=None): |
| 91 | return cls(configfile=os.path.join(gitdir, 'config'), | 93 | return cls(configfile=os.path.join(gitdir, 'config'), |
| @@ -415,7 +417,10 @@ class GitConfig(object): | |||
| 415 | class RepoConfig(GitConfig): | 417 | class RepoConfig(GitConfig): |
| 416 | """User settings for repo itself.""" | 418 | """User settings for repo itself.""" |
| 417 | 419 | ||
| 418 | _USER_CONFIG = '~/.repoconfig/config' | 420 | @staticmethod |
| 421 | def _getUserConfig(): | ||
| 422 | repo_config_dir = os.getenv('REPO_CONFIG_DIR', os.path.expanduser('~')) | ||
| 423 | return os.path.join(repo_config_dir, '.repoconfig/config') | ||
| 419 | 424 | ||
| 420 | 425 | ||
| 421 | class RefSpec(object): | 426 | class RefSpec(object): |
| @@ -149,7 +149,7 @@ if not REPO_REV: | |||
| 149 | BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue' | 149 | BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue' |
| 150 | 150 | ||
| 151 | # increment this whenever we make important changes to this script | 151 | # increment this whenever we make important changes to this script |
| 152 | VERSION = (2, 30) | 152 | VERSION = (2, 32) |
| 153 | 153 | ||
| 154 | # increment this if the MAINTAINER_KEYS block is modified | 154 | # increment this if the MAINTAINER_KEYS block is modified |
| 155 | KEYRING_VERSION = (2, 3) | 155 | KEYRING_VERSION = (2, 3) |
| @@ -265,7 +265,8 @@ else: | |||
| 265 | urllib.error = urllib2 | 265 | urllib.error = urllib2 |
| 266 | 266 | ||
| 267 | 267 | ||
| 268 | home_dot_repo = os.path.expanduser('~/.repoconfig') | 268 | repo_config_dir = os.getenv('REPO_CONFIG_DIR', os.path.expanduser('~')) |
| 269 | home_dot_repo = os.path.join(repo_config_dir, '.repoconfig') | ||
| 269 | gpg_dir = os.path.join(home_dot_repo, 'gnupg') | 270 | gpg_dir = os.path.join(home_dot_repo, 'gnupg') |
| 270 | 271 | ||
| 271 | 272 | ||
