func determineIncludeExcludePaths(config *config.Configuration, includeArg, excludeArg *string) (include, exclude []string) { if includeArg == nil { include = config.FetchIncludePaths() } else { include = tools.CleanPaths(*includeArg, ",") } if excludeArg == nil { exclude = config.FetchExcludePaths() } else { exclude = tools.CleanPaths(*excludeArg, ",") } return }
func TestCleanPathsCleansPaths(t *testing.T) { cleaned := tools.CleanPaths("/foo/bar/,/foo/bar/baz", ",") assert.Equal(t, []string{"/foo/bar", "/foo/bar/baz"}, cleaned) }
func TestCleanPathsReturnsNoResultsWhenGivenNoPaths(t *testing.T) { cleaned := tools.CleanPaths("", ",") assert.Empty(t, cleaned) }
func (c *Configuration) readGitConfig(output string, uniqRemotes map[string]bool, onlySafe bool) { lines := strings.Split(output, "\n") uniqKeys := make(map[string]string) for _, line := range lines { pieces := strings.SplitN(line, "=", 2) if len(pieces) < 2 { continue } allowed := !onlySafe key := strings.ToLower(pieces[0]) value := pieces[1] if origKey, ok := uniqKeys[key]; ok { if ShowConfigWarnings && c.gitConfig[key] != value && strings.HasPrefix(key, gitConfigWarningPrefix) { fmt.Fprintf(os.Stderr, "WARNING: These git config values clash:\n") fmt.Fprintf(os.Stderr, " git config %q = %q\n", origKey, c.gitConfig[key]) fmt.Fprintf(os.Stderr, " git config %q = %q\n", pieces[0], value) } } else { uniqKeys[key] = pieces[0] } keyParts := strings.Split(key, ".") if len(keyParts) == 4 && keyParts[0] == "lfs" && keyParts[1] == "extension" { name := keyParts[2] ext := c.extensions[name] switch keyParts[3] { case "clean": if onlySafe { continue } ext.Clean = value case "smudge": if onlySafe { continue } ext.Smudge = value case "priority": allowed = true p, err := strconv.Atoi(value) if err == nil && p >= 0 { ext.Priority = p } } ext.Name = name c.extensions[name] = ext } else if len(keyParts) > 1 && keyParts[0] == "remote" { if onlySafe && (len(keyParts) == 3 && keyParts[2] != "lfsurl") { continue } allowed = true remote := keyParts[1] uniqRemotes[remote] = remote == "origin" } else if len(keyParts) > 2 && keyParts[len(keyParts)-1] == "access" { allowed = true } if !allowed && keyIsUnsafe(key) { continue } c.gitConfig[key] = value if len(keyParts) == 2 && keyParts[0] == "lfs" { switch keyParts[1] { case "fetchinclude": c.fetchIncludePaths = tools.CleanPaths(value, ",") case "fetchexclude": c.fetchExcludePaths = tools.CleanPaths(value, ",") } } } }
func (c *Configuration) FetchExcludePaths() []string { patterns, _ := c.Git.Get("lfs.fetchexclude") return tools.CleanPaths(patterns, ",") }