mirror of
https://github.com/go-gitea/gitea
synced 2024-11-15 14:31:41 +01:00
Fix dump and restore respository (#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>
This commit is contained in:
parent
c0f5da3e1a
commit
8d7704b5a2
6 changed files with 17 additions and 4 deletions
|
@ -1497,6 +1497,11 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
|
||||||
releaseAttachments = append(releaseAttachments, attachments[i].RelativePath())
|
releaseAttachments = append(releaseAttachments, attachments[i].RelativePath())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, err = sess.In("release_id", builder.Select("id").From("`release`").Where(builder.Eq{"`release`.repo_id": repoID})).
|
||||||
|
Delete(&Attachment{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
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 {
|
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 {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -481,7 +482,9 @@ func (g *RepositoryDumper) CreatePullRequests(prs ...*base.PullRequest) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Fetch branch from %s failed: %v", pr.Head.CloneURL, err)
|
log.Error("Fetch branch from %s failed: %v", pr.Head.CloneURL, err)
|
||||||
} else {
|
} else {
|
||||||
headBranch := filepath.Join(g.gitPath(), "refs", "heads", pr.Head.OwnerName, pr.Head.Ref)
|
// a new branch name with <original_owner_name/original_branchname> will be created to as new head branch
|
||||||
|
ref := path.Join(pr.Head.OwnerName, pr.Head.Ref)
|
||||||
|
headBranch := filepath.Join(g.gitPath(), "refs", "heads", ref)
|
||||||
if err := os.MkdirAll(filepath.Dir(headBranch), os.ModePerm); err != nil {
|
if err := os.MkdirAll(filepath.Dir(headBranch), os.ModePerm); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -494,10 +497,14 @@ func (g *RepositoryDumper) CreatePullRequests(prs ...*base.PullRequest) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
pr.Head.Ref = ref
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// whatever it's a forked repo PR, we have to change head info as the same as the base info
|
||||||
|
pr.Head.OwnerName = pr.Base.OwnerName
|
||||||
|
pr.Head.RepoName = pr.Base.RepoName
|
||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
|
@ -278,7 +278,7 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
|
||||||
if !release.Draft {
|
if !release.Draft {
|
||||||
commit, err := g.gitRepo.GetTagCommit(rel.TagName)
|
commit, err := g.gitRepo.GetTagCommit(rel.TagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetCommit: %v", err)
|
return fmt.Errorf("GetTagCommit[%v]: %v", rel.TagName, err)
|
||||||
}
|
}
|
||||||
rel.NumCommits, err = commit.CommitsCount()
|
rel.NumCommits, err = commit.CommitsCount()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -54,6 +54,7 @@ func RestoreRepo(ctx context.Context, repoDir, ownerName, repoName string, units
|
||||||
if err := json.Unmarshal(body, &ret); err != nil {
|
if err := json.Unmarshal(body, &ret); err != nil {
|
||||||
return http.StatusInternalServerError, fmt.Sprintf("Response body Unmarshal error: %v", err.Error())
|
return http.StatusInternalServerError, fmt.Sprintf("Response body Unmarshal error: %v", err.Error())
|
||||||
}
|
}
|
||||||
|
return http.StatusInternalServerError, ret.Err
|
||||||
}
|
}
|
||||||
|
|
||||||
return http.StatusOK, fmt.Sprintf("Restore repo %s/%s successfully", ownerName, repoName)
|
return http.StatusOK, fmt.Sprintf("Restore repo %s/%s successfully", ownerName, repoName)
|
||||||
|
|
|
@ -126,7 +126,7 @@ func getMergeCommit(pr *models.PullRequest) (*git.Commit, error) {
|
||||||
|
|
||||||
commit, err := gitRepo.GetCommit(mergeCommit[:40])
|
commit, err := gitRepo.GetCommit(mergeCommit[:40])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetCommit: %v", err)
|
return nil, fmt.Errorf("GetMergeCommit[%v]: %v", mergeCommit[:40], err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return commit, nil
|
return commit, nil
|
||||||
|
|
|
@ -44,7 +44,7 @@ func createTag(gitRepo *git.Repository, rel *models.Release, msg string) (bool,
|
||||||
|
|
||||||
commit, err := gitRepo.GetCommit(rel.Target)
|
commit, err := gitRepo.GetCommit(rel.Target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("GetCommit: %v", err)
|
return false, fmt.Errorf("createTag::GetCommit[%v]: %v", rel.Target, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trim '--' prefix to prevent command line argument vulnerability.
|
// Trim '--' prefix to prevent command line argument vulnerability.
|
||||||
|
|
Loading…
Reference in a new issue