Improve repo cloning logic

Amolith created

Implements: https://todo.sr.ht/~amolith/willow/13

Change summary

git/git.go | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

Detailed changes

git/git.go 🔗

@@ -112,20 +112,16 @@ func minimalClone(url string) (r *git.Repository, err error) {
 		return nil, err
 	}
 
-	if _, err := os.Stat(path); err == nil {
-		r, err := git.PlainOpen(path)
-		if err != nil {
-			return nil, err
-		}
+	r, err = git.PlainOpen(path)
+	if err == nil {
 		err = r.Fetch(&git.FetchOptions{
 			RemoteName: "origin",
 			Depth:      1,
 			Tags:       git.AllTags,
 		})
-		if errors.Is(err, git.NoErrAlreadyUpToDate) {
-			return r, nil
-		}
 		return r, err
+	} else if !errors.Is(err, git.ErrRepositoryNotExists) {
+		return nil, err
 	}
 
 	r, err = git.PlainClone(path, false, &git.CloneOptions{