From d8ca62c6c1fc744e4a8809417ca17d8e891248de Mon Sep 17 00:00:00 2001 From: Suleiman Dibirov <3595194+idsulik@users.noreply.github.com> Date: Thu, 29 Aug 2024 17:45:38 +0300 Subject: [PATCH] feat(git): added commit hash support to git.ref (#9430) --- pkg/skaffold/git/gitutil.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/skaffold/git/gitutil.go b/pkg/skaffold/git/gitutil.go index 01bd8e9f694..3c3bf2bcb66 100644 --- a/pkg/skaffold/git/gitutil.go +++ b/pkg/skaffold/git/gitutil.go @@ -125,7 +125,22 @@ 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 { - return "", fmt.Errorf("failed to clone repo: %w", err) + 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) + } + + return "", fmt.Errorf("failed to checkout commit: %w", err) + } + } else { + return "", fmt.Errorf("failed to clone repo: %w", err) + } } } else { r.Dir = repoCacheDir