1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-25 12:24:47 +02:00

Drop the git config cache when getting focus

This allows changing git config values while lazygit is running (e.g. in a
different terminal tab, or even in lazygit's ":" shell prompt), and have them
take effect immediately, while still getting some benefit from caching them
while lazygit is in the foreground.
This commit is contained in:
Stefan Haller 2025-03-08 12:06:50 +01:00
parent f98ad65f46
commit 3e15be576e
4 changed files with 18 additions and 0 deletions

View File

@ -111,3 +111,7 @@ func (self *ConfigCommands) GetCoreCommentChar() byte {
func (self *ConfigCommands) GetRebaseUpdateRefs() bool {
return self.gitConfig.GetBool("rebase.updateRefs")
}
func (self *ConfigCommands) DropConfigCache() {
self.gitConfig.DropCache()
}

View File

@ -15,6 +15,8 @@ type IGitConfig interface {
GetGeneral(string) string
// this is for when you want to pass 'mykey' and check if the result is truthy
GetBool(string) bool
DropCache()
}
type CachedGitConfig struct {
@ -93,3 +95,10 @@ func isTruthy(value string) bool {
lcValue := strings.ToLower(value)
return lcValue == "true" || lcValue == "1" || lcValue == "yes" || lcValue == "on"
}
func (self *CachedGitConfig) DropCache() {
self.mutex.Lock()
defer self.mutex.Unlock()
self.cache = make(map[string]string)
}

View File

@ -27,3 +27,6 @@ func (self *FakeGitConfig) GetGeneral(args string) string {
func (self *FakeGitConfig) GetBool(key string) bool {
return isTruthy(self.Get(key))
}
func (self *FakeGitConfig) DropCache() {
}

View File

@ -331,6 +331,8 @@ func (gui *Gui) onNewRepo(startArgs appTypes.StartArgs, contextKey types.Context
gui.g.SetFocusHandler(func(Focused bool) error {
if Focused {
gui.git.Config.DropConfigCache()
oldConfig := gui.Config.GetUserConfig()
reloadErr, didChange := gui.Config.ReloadChangedUserConfigFiles()
if didChange && reloadErr == nil {