From a000f0c7a632ada40e6829abdeea525db4c0fc2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=8A=E1=B4=8F=E1=B4=87=20=E1=B4=84=CA=9C=E1=B4=87?= =?UTF-8?q?=C9=B4?= Date: Thu, 12 Feb 2026 21:24:44 -0500 Subject: [PATCH] database: use safe git-module API for tag deletion (#8175) Co-authored-by: Claude Opus 4.6 (1M context) --- internal/database/release.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/database/release.go b/internal/database/release.go index ae56c8362..384501aed 100644 --- a/internal/database/release.go +++ b/internal/database/release.go @@ -13,7 +13,6 @@ import ( "github.com/gogs/git-module" "gogs.io/gogs/internal/errutil" - "gogs.io/gogs/internal/process" apiv1types "gogs.io/gogs/internal/route/api/v1/types" ) @@ -359,11 +358,13 @@ func DeleteReleaseOfRepoByID(repoID, id int64) error { return errors.Newf("GetRepositoryByID: %v", err) } - _, stderr, err := process.ExecDir(-1, repo.RepoPath(), - fmt.Sprintf("DeleteReleaseByID (git tag -d): %d", rel.ID), - "git", "tag", "-d", rel.TagName) - if err != nil && !strings.Contains(stderr, "not found") { - return errors.Newf("git tag -d: %v - %s", err, stderr) + gitRepo, err := git.Open(repo.RepoPath()) + if err != nil { + return errors.Newf("open repository: %v", err) + } + err = gitRepo.DeleteTag(rel.TagName) + if err != nil && !strings.Contains(err.Error(), "not found") { + return errors.Newf("delete tag: %v", err) } if _, err = x.Id(rel.ID).Delete(new(Release)); err != nil {