Remove refs/heads/ prefix from FullChangeId

Bug: skia:12288
Change-Id: Ie56a42210223409d974aa221c69c5a2c47e59bd8
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/435618
Reviewed-by: Eric Boren <borenet@google.com>
diff --git a/go/gerrit/gerrit.go b/go/gerrit/gerrit.go
index abd6436..8ffd001 100644
--- a/go/gerrit/gerrit.go
+++ b/go/gerrit/gerrit.go
@@ -1484,7 +1484,10 @@
 // change. See
 // https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-id
 func FullChangeId(ci *ChangeInfo) string {
+	branch := ci.Branch
+	// Do not include refs/heads/ when constructing the full change Id.
+	branch = strings.TrimPrefix(branch, "refs/heads/")
 	// Encode the branch to convert names like chrome/m90 into chrome%2Fm90.
-	encodedBranch := url.QueryEscape(ci.Branch)
-	return fmt.Sprintf("%s~%s~%s", ci.Project, encodedBranch, ci.ChangeId)
+	branch = url.QueryEscape(branch)
+	return fmt.Sprintf("%s~%s~%s", ci.Project, branch, ci.ChangeId)
 }
diff --git a/go/gerrit/gerrit_test.go b/go/gerrit/gerrit_test.go
index 224051f..bb4ccc6 100644
--- a/go/gerrit/gerrit_test.go
+++ b/go/gerrit/gerrit_test.go
@@ -596,3 +596,22 @@
 	require.NoError(t, err)
 	require.Equal(t, expect, actual)
 }
+
+func TestFullChangeId(t *testing.T) {
+	unittest.SmallTest(t)
+
+	ci := &ChangeInfo{
+		Project:  "skia",
+		Branch:   "main",
+		ChangeId: "abc",
+	}
+	require.Equal(t, "skia~main~abc", FullChangeId(ci))
+
+	// Test branch with "/" in the name.
+	ci.Branch = "chrome/m90"
+	require.Equal(t, "skia~chrome%2Fm90~abc", FullChangeId(ci))
+
+	// Test branch with "refs/heads/" prefix.
+	ci.Branch = "refs/heads/chrome/m90"
+	require.Equal(t, "skia~chrome%2Fm90~abc", FullChangeId(ci))
+}