Move git identity to an included ~/.gitconfig.local
~/.extra ran five `git config --global` writes on every shell startup, to
re-assert identity and signing after bootstrap.sh copies gitconfig over
~/.gitconfig. The dark-mode-notify agent fires on wake/unlock and runs
`pkill -usr1 zsh`, so every shell re-sources .zshrc — and therefore .extra —
simultaneously. `git config` locks with O_EXCL and has no retry or timeout for
config files, so the concurrent writes raced and printed:
error: could not lock config file /Users/jonny/.gitconfig: File exists
Identity and signing now live in an untracked ~/.gitconfig.local, included
last from gitconfig so it wins over anything above. bootstrap.sh seeds it from
gitconfig.local.template only when absent, so re-runs never clobber the real
signing key. No git writes happen on shell startup at all now.
Verified: fully-resolved config is unchanged apart from the new include.path;
author and committer both resolve from config with no GIT_* env vars set;
existing commits still verify. 12 concurrent sources of .extra are silent,
where the old version produced 27 lock errors.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d245a83f2c
commit
583bbaa533
3 changed files with 39 additions and 1 deletions
|
|
@ -87,3 +87,9 @@
|
|||
autoSquash = true
|
||||
autoStash = true
|
||||
updateRefs = true
|
||||
|
||||
# Machine-local identity and signing config. Untracked, and included last so
|
||||
# it wins over anything above. Keeps `bootstrap.sh`'s copy of this file
|
||||
# non-destructive without needing to re-apply values on every shell startup.
|
||||
[include]
|
||||
path = ~/.gitconfig.local
|
||||
|
|
|
|||
Loading…
Reference in a new issue