mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +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:
		| @@ -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() | ||||
| } | ||||
|   | ||||
| @@ -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) | ||||
| } | ||||
|   | ||||
| @@ -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() { | ||||
| } | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user