Skip to content

Commit ba4f3d2

Browse files
lunnyzeripath
andcommitted
Fix dump and restore respository (go-gitea#16698)
* Fix dump and restore * return different error message for get commit * Fix missing delete release attachment when deleting repository * Fix ci and add some comments Co-authored-by: zeripath <art27@cantab.net>
1 parent 49a71a6 commit ba4f3d2

File tree

6 files changed

+17
-4
lines changed

6 files changed

+17
-4
lines changed

models/repo.go

+5
Original file line numberDiff line numberDiff line change
@@ -1490,6 +1490,11 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
14901490
releaseAttachments = append(releaseAttachments, attachments[i].RelativePath())
14911491
}
14921492

1493+
if _, err = sess.In("release_id", builder.Select("id").From("`release`").Where(builder.Eq{"`release`.repo_id": repoID})).
1494+
Delete(&Attachment{}); err != nil {
1495+
return err
1496+
}
1497+
14931498
if _, err := sess.Exec("UPDATE `user` SET num_stars=num_stars-1 WHERE id IN (SELECT `uid` FROM `star` WHERE repo_id = ?)", repo.ID); err != nil {
14941499
return err
14951500
}

modules/migrations/dump.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"net/http"
1212
"net/url"
1313
"os"
14+
"path"
1415
"path/filepath"
1516
"strconv"
1617
"strings"
@@ -481,7 +482,9 @@ func (g *RepositoryDumper) CreatePullRequests(prs ...*base.PullRequest) error {
481482
if err != nil {
482483
log.Error("Fetch branch from %s failed: %v", pr.Head.CloneURL, err)
483484
} else {
484-
headBranch := filepath.Join(g.gitPath(), "refs", "heads", pr.Head.OwnerName, pr.Head.Ref)
485+
// a new branch name with <original_owner_name/original_branchname> will be created to as new head branch
486+
ref := path.Join(pr.Head.OwnerName, pr.Head.Ref)
487+
headBranch := filepath.Join(g.gitPath(), "refs", "heads", ref)
485488
if err := os.MkdirAll(filepath.Dir(headBranch), os.ModePerm); err != nil {
486489
return err
487490
}
@@ -494,10 +497,14 @@ func (g *RepositoryDumper) CreatePullRequests(prs ...*base.PullRequest) error {
494497
if err != nil {
495498
return err
496499
}
500+
pr.Head.Ref = ref
497501
}
498502
}
499503
}
500504
}
505+
// whatever it's a forked repo PR, we have to change head info as the same as the base info
506+
pr.Head.OwnerName = pr.Base.OwnerName
507+
pr.Head.RepoName = pr.Base.RepoName
501508
}
502509

503510
var err error

modules/migrations/gitea_uploader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
254254
if !release.Draft {
255255
commit, err := g.gitRepo.GetTagCommit(rel.TagName)
256256
if err != nil {
257-
return fmt.Errorf("GetCommit: %v", err)
257+
return fmt.Errorf("GetTagCommit[%v]: %v", rel.TagName, err)
258258
}
259259
rel.NumCommits, err = commit.CommitsCount()
260260
if err != nil {

modules/private/restore_repo.go

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func RestoreRepo(ctx context.Context, repoDir, ownerName, repoName string, units
5555
if err := json.Unmarshal(body, &ret); err != nil {
5656
return http.StatusInternalServerError, fmt.Sprintf("Response body Unmarshal error: %v", err.Error())
5757
}
58+
return http.StatusInternalServerError, ret.Err
5859
}
5960

6061
return http.StatusOK, fmt.Sprintf("Restore repo %s/%s successfully", ownerName, repoName)

services/pull/check.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func getMergeCommit(pr *models.PullRequest) (*git.Commit, error) {
126126

127127
commit, err := gitRepo.GetCommit(mergeCommit[:40])
128128
if err != nil {
129-
return nil, fmt.Errorf("GetCommit: %v", err)
129+
return nil, fmt.Errorf("GetMergeCommit[%v]: %v", mergeCommit[:40], err)
130130
}
131131

132132
return commit, nil

services/release/release.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func createTag(gitRepo *git.Repository, rel *models.Release, msg string) (bool,
4444

4545
commit, err := gitRepo.GetCommit(rel.Target)
4646
if err != nil {
47-
return false, fmt.Errorf("GetCommit: %v", err)
47+
return false, fmt.Errorf("createTag::GetCommit[%v]: %v", rel.Target, err)
4848
}
4949

5050
// Trim '--' prefix to prevent command line argument vulnerability.

0 commit comments

Comments
 (0)