aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/files/patch.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/repository/files/patch.go')
-rw-r--r--services/repository/files/patch.go56
1 files changed, 29 insertions, 27 deletions
diff --git a/services/repository/files/patch.go b/services/repository/files/patch.go
index 38c17b4073..11a8744b7f 100644
--- a/services/repository/files/patch.go
+++ b/services/repository/files/patch.go
@@ -12,7 +12,6 @@ import (
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
- "code.gitea.io/gitea/modules/gitrepo"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util"
@@ -45,7 +44,6 @@ type ApplyDiffPatchOptions struct {
NewBranch string
Message string
Content string
- SHA string
Author *IdentityOptions
Committer *IdentityOptions
Dates *CommitDateOptions
@@ -62,29 +60,26 @@ func (opts *ApplyDiffPatchOptions) Validate(ctx context.Context, repo *repo_mode
opts.NewBranch = opts.OldBranch
}
- gitRepo, closer, err := gitrepo.RepositoryFromContextOrOpen(ctx, repo)
- if err != nil {
- return err
- }
- defer closer.Close()
-
// oldBranch must exist for this operation
- if _, err := gitRepo.GetBranch(opts.OldBranch); err != nil {
+ if exist, err := git_model.IsBranchExist(ctx, repo.ID, opts.OldBranch); err != nil {
return err
+ } else if !exist {
+ return git_model.ErrBranchNotExist{
+ BranchName: opts.OldBranch,
+ }
}
// A NewBranch can be specified for the patch to be applied to.
// Check to make sure the branch does not already exist, otherwise we can't proceed.
// If we aren't branching to a new branch, make sure user can commit to the given branch
if opts.NewBranch != opts.OldBranch {
- existingBranch, err := gitRepo.GetBranch(opts.NewBranch)
- if existingBranch != nil {
+ exist, err := git_model.IsBranchExist(ctx, repo.ID, opts.NewBranch)
+ if err != nil {
+ return err
+ } else if exist {
return git_model.ErrBranchAlreadyExists{
BranchName: opts.NewBranch,
}
}
- if err != nil && !git.IsErrBranchNotExist(err) {
- return err
- }
} else {
protectedBranch, err := git_model.GetFirstMatchProtectedBranchRule(ctx, repo.ID, opts.OldBranch)
if err != nil {
@@ -126,17 +121,15 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
message := strings.TrimSpace(opts.Message)
- author, committer := GetAuthorAndCommitterUsers(opts.Author, opts.Committer, doer)
-
- t, err := NewTemporaryUploadRepository(ctx, repo)
+ t, err := NewTemporaryUploadRepository(repo)
if err != nil {
log.Error("NewTemporaryUploadRepository failed: %v", err)
}
defer t.Close()
- if err := t.Clone(opts.OldBranch, true); err != nil {
+ if err := t.Clone(ctx, opts.OldBranch, true); err != nil {
return nil, err
}
- if err := t.SetDefaultIndex(); err != nil {
+ if err := t.SetDefaultIndex(ctx); err != nil {
return nil, err
}
@@ -166,12 +159,12 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
stdout := &strings.Builder{}
stderr := &strings.Builder{}
- cmdApply := git.NewCommand(ctx, "apply", "--index", "--recount", "--cached", "--ignore-whitespace", "--whitespace=fix", "--binary")
+ cmdApply := git.NewCommand("apply", "--index", "--recount", "--cached", "--ignore-whitespace", "--whitespace=fix", "--binary")
if git.DefaultFeatures().CheckVersionAtLeast("2.32") {
cmdApply.AddArguments("-3")
}
- if err := cmdApply.Run(&git.RunOpts{
+ if err := cmdApply.Run(ctx, &git.RunOpts{
Dir: t.basePath,
Stdout: stdout,
Stderr: stderr,
@@ -181,24 +174,33 @@ func ApplyDiffPatch(ctx context.Context, repo *repo_model.Repository, doer *user
}
// Now write the tree
- treeHash, err := t.WriteTree()
+ treeHash, err := t.WriteTree(ctx)
if err != nil {
return nil, err
}
// Now commit the tree
- var commitHash string
+ commitOpts := &CommitTreeUserOptions{
+ ParentCommitID: "HEAD",
+ TreeHash: treeHash,
+ CommitMessage: message,
+ SignOff: opts.Signoff,
+ DoerUser: doer,
+ AuthorIdentity: opts.Author,
+ AuthorTime: nil,
+ CommitterIdentity: opts.Committer,
+ CommitterTime: nil,
+ }
if opts.Dates != nil {
- commitHash, err = t.CommitTreeWithDate("HEAD", author, committer, treeHash, message, opts.Signoff, opts.Dates.Author, opts.Dates.Committer)
- } else {
- commitHash, err = t.CommitTree("HEAD", author, committer, treeHash, message, opts.Signoff)
+ commitOpts.AuthorTime, commitOpts.CommitterTime = &opts.Dates.Author, &opts.Dates.Committer
}
+ commitHash, err := t.CommitTree(ctx, commitOpts)
if err != nil {
return nil, err
}
// Then push this tree to NewBranch
- if err := t.Push(doer, commitHash, opts.NewBranch); err != nil {
+ if err := t.Push(ctx, doer, commitHash, opts.NewBranch); err != nil {
return nil, err
}