|
|
|
@ -54,34 +54,34 @@ func isGitDir(path string) (bool, error) {
|
|
|
|
|
return true, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func detectGitPath(path string) (string, error) {
|
|
|
|
|
func detectGitPath(path string) (string, bool, error) {
|
|
|
|
|
path, err := filepath.Abs(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", err
|
|
|
|
|
return "", false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for {
|
|
|
|
|
fi, err := os.Stat(filepath.Join(path, ".git"))
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !fi.IsDir() {
|
|
|
|
|
return "", fmt.Errorf(".git exist but is not a directory")
|
|
|
|
|
return "", false, fmt.Errorf(".git exist but is not a directory")
|
|
|
|
|
}
|
|
|
|
|
return filepath.Join(path, ".git"), nil
|
|
|
|
|
return path, false, nil
|
|
|
|
|
}
|
|
|
|
|
if !os.IsNotExist(err) {
|
|
|
|
|
return "", err
|
|
|
|
|
return "", false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ok, err := isGitDir(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", err
|
|
|
|
|
return "", false, err
|
|
|
|
|
}
|
|
|
|
|
if ok {
|
|
|
|
|
return path, nil
|
|
|
|
|
return path, true, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if parent := filepath.Dir(path); parent == path {
|
|
|
|
|
return "", fmt.Errorf(".git not found")
|
|
|
|
|
return "", false, fmt.Errorf(".git not found")
|
|
|
|
|
} else {
|
|
|
|
|
path = parent
|
|
|
|
|
}
|
|
|
|
|