diff --git a/pkg/io/io.go b/pkg/io/io.go index df81c92..9bfac0d 100644 --- a/pkg/io/io.go +++ b/pkg/io/io.go @@ -5,6 +5,7 @@ import ( "fmt" "io/ioutil" "os" + "path/filepath" "strings" "syscall" @@ -101,10 +102,19 @@ func (r *RepoFinder) Find() ([]string, error) { } func (r *RepoFinder) walkCb(path string, ent *godirwalk.Dirent) error { + // Do not traverse .git directories if ent.IsDir() && ent.Name() == ".git" { r.repos = append(r.repos, strings.TrimSuffix(path, ".git")) return ErrSkipNode } + // Do not traverse directories containing a .git directory + if ent.IsDir() { + _, err := os.Stat(filepath.Join(path, ".git")) + if err == nil { + r.repos = append(r.repos, strings.TrimSuffix(path, ".git")) + return ErrSkipNode + } + } return nil }