From b31eedbce8574c681e6595ab56c1b77c9ca3fa14 Mon Sep 17 00:00:00 2001 From: anshlykov Date: Tue, 17 Nov 2020 19:58:03 +0300 Subject: [PATCH] git tagger: fix dirty tag containing a slash --- pkg/skaffold/build/tag/git_commit.go | 4 +++- pkg/skaffold/build/tag/git_commit_test.go | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/pkg/skaffold/build/tag/git_commit.go b/pkg/skaffold/build/tag/git_commit.go index 911f165254e..563770f8199 100644 --- a/pkg/skaffold/build/tag/git_commit.go +++ b/pkg/skaffold/build/tag/git_commit.go @@ -69,11 +69,13 @@ func (t *GitCommit) GenerateTag(workingDir, _ string) (string, error) { return "", fmt.Errorf("getting git status: %w", err) } + ref = sanitizeTag(ref) + if len(changes) > 0 { return fmt.Sprintf("%s%s-dirty", t.prefix, ref), nil } - return t.prefix + sanitizeTag(ref), nil + return t.prefix + ref, nil } // sanitizeTag takes a git tag and converts it to a docker tag by removing diff --git a/pkg/skaffold/build/tag/git_commit_test.go b/pkg/skaffold/build/tag/git_commit_test.go index 489528654f5..f5cec102fb9 100644 --- a/pkg/skaffold/build/tag/git_commit_test.go +++ b/pkg/skaffold/build/tag/git_commit_test.go @@ -80,6 +80,26 @@ func TestGitCommit_GenerateTag(t *testing.T) { tag("v/2") }, }, + { + description: "dirty worktree with tag containing a slash", + variantTags: "v_2-dirty", + variantCommitSha: "aea33bcc86b5af8c8570ff45d8a643202d63c808-dirty", + variantAbbrevCommitSha: "aea33bc-dirty", + variantTreeSha: "bc69d50cda6897a6f2054e64b9059f038dc6fb0e-dirty", + variantAbbrevTreeSha: "bc69d50-dirty", + createGitRepo: func(dir string) { + gitInit(t, dir). + write("source.go", "code"). + add("source.go"). + commit("initial"). + tag("v/1"). + write("other.go", "other"). + add("other.go"). + commit("second commit"). + tag("v/2"). + write("other.go", "updated code") + }, + }, { description: "clean worktree with tags", variantTags: "v2",