Skip to content

Commit 9f463a7

Browse files
Gustedearl-warren
authored andcommitted
[GITEA] Allow release creation on commit
- The code and tests are already there to allow releases to be created on commits. - This patch modifies the web code to take into account that an commitID could've been passed as target. - Added unit test. - Resolves https://codeberg.org/forgejo/forgejo/issues/1196 (cherry picked from commit 90863e0ab51d1b243f67de266bbeeb7a9031c525) (cherry picked from commit c805aa23b5c6c9a8ab79e2e66786a4ef798e827a) (cherry picked from commit cf45567ca60b2a9411694c8e9b649fd77c64bdae) (cherry picked from commit 672a2b91e5612f438bd7951d173f42c223629fd1) (cherry picked from commit 82c930152cd693f8451e9553504365c724e1fced) (cherry picked from commit 95ac2508b3e8dd9fc2b0168600d989dbce0744ec) (cherry picked from commit b13a81ab98a02e30d1b508bb89cdd67a05eae782)
1 parent cdaa961 commit 9f463a7

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

routers/web/repo/release.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,9 @@ func NewReleasePost(ctx *context.Context) {
387387
return
388388
}
389389

390-
if !ctx.Repo.GitRepo.IsBranchExist(form.Target) {
390+
// form.Target can be a branch name or a full commitID.
391+
if !ctx.Repo.GitRepo.IsBranchExist(form.Target) &&
392+
len(form.Target) == git.SHAFullLength && !ctx.Repo.GitRepo.IsCommitExist(form.Target) {
391393
ctx.RenderWithErr(ctx.Tr("form.target_branch_not_exist"), tplReleaseNew, &form)
392394
return
393395
}

tests/integration/release_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ import (
2121
)
2222

2323
func createNewRelease(t *testing.T, session *TestSession, repoURL, tag, title string, preRelease, draft bool) {
24+
createNewReleaseTarget(t, session, repoURL, tag, title, "master", preRelease, draft)
25+
}
26+
27+
func createNewReleaseTarget(t *testing.T, session *TestSession, repoURL, tag, title, target string, preRelease, draft bool) {
2428
req := NewRequest(t, "GET", repoURL+"/releases/new")
2529
resp := session.MakeRequest(t, req, http.StatusOK)
2630
htmlDoc := NewHTMLParser(t, resp.Body)
@@ -31,7 +35,7 @@ func createNewRelease(t *testing.T, session *TestSession, repoURL, tag, title st
3135
postData := map[string]string{
3236
"_csrf": htmlDoc.GetCSRF(),
3337
"tag_name": tag,
34-
"tag_target": "master",
38+
"tag_target": target,
3539
"title": title,
3640
"content": "",
3741
}
@@ -239,3 +243,12 @@ func TestViewTagsList(t *testing.T) {
239243

240244
assert.EqualValues(t, []string{"v1.0", "delete-tag", "v1.1"}, tagNames)
241245
}
246+
247+
func TestReleaseOnCommit(t *testing.T) {
248+
defer tests.PrepareTestEnv(t)()
249+
250+
session := loginUser(t, "user2")
251+
createNewReleaseTarget(t, session, "/user2/repo1", "v0.0.1", "v0.0.1", "65f1bf27bc3bf70f64657658635e66094edbcb4d", false, false)
252+
253+
checkLatestReleaseAndCount(t, session, "/user2/repo1", "v0.0.1", translation.NewLocale("en-US").Tr("repo.release.stable"), 4)
254+
}

0 commit comments

Comments
 (0)