diff --git a/pkg/skaffold/git/gitutil.go b/pkg/skaffold/git/gitutil.go index 3c3bf2bcb66..e70540e9f8f 100644 --- a/pkg/skaffold/git/gitutil.go +++ b/pkg/skaffold/git/gitutil.go @@ -125,21 +125,21 @@ func syncRepo(ctx context.Context, g Config, opts config.SkaffoldOptions) (strin return "", SyncDisabledErr(g, repoCacheDir) } if _, err := r.Run(ctx, "clone", g.RepoCloneURI, fmt.Sprintf("./%s", hash), "--branch", ref, "--depth", "1"); err != nil { - if strings.Contains(err.Error(), "Could not find remote branch") { - if _, err := r.Run(ctx, "clone", g.RepoCloneURI, fmt.Sprintf("./%s", hash), "--depth", "1"); err != nil { - return "", fmt.Errorf("failed to clone repo: %w", err) - } - - r.Dir = repoCacheDir - if _, err := r.Run(ctx, "checkout", ref); err != nil { - if rmErr := os.RemoveAll(repoCacheDir); rmErr != nil { - err = fmt.Errorf("failed to remove repo cache dir: %w", rmErr) - } + // Remove partially created directory before attempting full clone + if rmErr := os.RemoveAll(repoCacheDir); rmErr != nil { + return "", fmt.Errorf("failed to remove partially created repo directory: %w", rmErr) + } + if _, err := r.Run(ctx, "clone", g.RepoCloneURI, fmt.Sprintf("./%s", hash)); err != nil { + return "", fmt.Errorf("failed to clone repo: %w", err) + } - return "", fmt.Errorf("failed to checkout commit: %w", err) + r.Dir = repoCacheDir + if _, err := r.Run(ctx, "checkout", ref); err != nil { + if rmErr := os.RemoveAll(repoCacheDir); rmErr != nil { + err = fmt.Errorf("failed to remove repo cache dir: %w", rmErr) } - } else { - return "", fmt.Errorf("failed to clone repo: %w", err) + + return "", fmt.Errorf("failed to checkout commit: %w", err) } } } else {