code: func (c *Client) refreshLockablePatterns() {
  	paths := git.GetAttributePaths(gitattr.NewMacroProcessor(), c.LocalWorkingDir, c.LocalGitDir)
  	// Always make non-nil even if empty
  	c.lockablePatterns = make([]string, 0, len(paths))
  	for _, p := range paths {
  		if p.Lockable {
  			c.lockablePatterns = append(c.lockablePatterns, p.Path)
  		}
  	}
  	c.lockableFilter = filepathfilter.New(c.lockablePatterns, nil)
  }
docs: // Internal function to repopulate lockable patterns
  // You must have locked the c.lockableMutex in the caller