From 41b186cbfdc75178299d2ac53a7ac54ac14b6a62 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 377cf6f42..425c3f451 100644 --- a/internal/database/release.go +++ b/internal/database/release.go @@ -14,7 +14,6 @@ import ( api "github.com/gogs/go-gogs-client" "gogs.io/gogs/internal/errutil" - "gogs.io/gogs/internal/process" ) // Release represents a release of repository. @@ -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 {