summaryrefslogtreecommitdiffstats
path: root/services/migrations
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-12-23 13:44:00 +0000
committerGitHub <noreply@github.com>2021-12-23 21:44:00 +0800
commitffc08c1914fbe6a5a5ebe9c8571b790ac6024d71 (patch)
tree78e95e6dbf82d25e0fa9c534cab61fb8d266cc9f /services/migrations
parente0cf3d86c44fde99b49f12c7a1386cbf433a0207 (diff)
downloadgitea-ffc08c1914fbe6a5a5ebe9c8571b790ac6024d71.tar.gz
gitea-ffc08c1914fbe6a5a5ebe9c8571b790ac6024d71.zip
Do not read or write git reference files directly (#18079)
Git will and can pack references into packfiles and therefore if you write/read the files directly you will get false results. Instead you should use update-ref and show-ref. To that end I have created three new functions in git/repo_commit.go that will do this correctly. Related #17191 Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'services/migrations')
-rw-r--r--services/migrations/gitea_uploader.go3
1 files changed, 1 insertions, 2 deletions
diff --git a/services/migrations/gitea_uploader.go b/services/migrations/gitea_uploader.go
index 33ca3127fb..79225d75a0 100644
--- a/services/migrations/gitea_uploader.go
+++ b/services/migrations/gitea_uploader.go
@@ -698,8 +698,7 @@ func (g *GiteaLocalUploader) newPullRequest(pr *base.PullRequest) (*models.PullR
if pr.Head.SHA != "" {
// Git update-ref remove bad references with a relative path
log.Warn("Deprecated local head, removing : %v", pr.Head.SHA)
- relPath := pr.GetGitRefName()
- _, err = git.NewCommand("update-ref", "--no-deref", "-d", relPath).RunInDir(g.repo.RepoPath())
+ err = g.gitRepo.RemoveReference(pr.GetGitRefName())
} else {
// The SHA is empty, remove the head file
log.Warn("Empty reference, removing : %v", pullHead)