From 5dc5b09e4cb9745b4c6b2f083cdf40bad55fc5c2 Mon Sep 17 00:00:00 2001 From: Suleiman Dibirov Date: Sat, 18 Oct 2025 19:46:53 +0300 Subject: [PATCH 1/2] fix: streamline repo cloning logic in gitutil.go Signed-off-by: Suleiman Dibirov --- pkg/skaffold/git/gitutil.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/pkg/skaffold/git/gitutil.go b/pkg/skaffold/git/gitutil.go index 3c3bf2bcb66..ade9484c8c9 100644 --- a/pkg/skaffold/git/gitutil.go +++ b/pkg/skaffold/git/gitutil.go @@ -125,21 +125,17 @@ 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) - } + 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 { From 05623cc89abd97d0de37b1a52c5ac8cceb7cddc6 Mon Sep 17 00:00:00 2001 From: Suleiman Dibirov Date: Sat, 18 Oct 2025 19:55:16 +0300 Subject: [PATCH 2/2] handle partial directory removal during repo cloning in gitutil.go Signed-off-by: Suleiman Dibirov --- pkg/skaffold/git/gitutil.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/skaffold/git/gitutil.go b/pkg/skaffold/git/gitutil.go index ade9484c8c9..e70540e9f8f 100644 --- a/pkg/skaffold/git/gitutil.go +++ b/pkg/skaffold/git/gitutil.go @@ -125,6 +125,10 @@ 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 { + // 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) }