Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>tags/v1.15.0-dev
@@ -275,7 +275,7 @@ func (*actionNotifier) NotifyMergePullRequest(pr *models.PullRequest, doer *mode | |||
} | |||
} | |||
func (a *actionNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func (a *actionNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
data, err := json.Marshal(commits) | |||
if err != nil { | |||
log.Error("json.Marshal: %v", err) | |||
@@ -289,7 +289,7 @@ func (a *actionNotifier) NotifySyncPushCommits(pusher *models.User, repo *models | |||
RepoID: repo.ID, | |||
Repo: repo, | |||
IsPrivate: repo.IsPrivate, | |||
RefName: refName, | |||
RefName: opts.RefFullName, | |||
Content: string(data), | |||
}); err != nil { | |||
log.Error("notifyWatchers: %v", err) | |||
@@ -48,11 +48,11 @@ type Notifier interface { | |||
NotifyUpdateRelease(doer *models.User, rel *models.Release) | |||
NotifyDeleteRelease(doer *models.User, rel *models.Release) | |||
NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) | |||
NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) | |||
NotifyCreateRef(doer *models.User, repo *models.Repository, refType, refFullName string) | |||
NotifyDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string) | |||
NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) | |||
NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) | |||
NotifySyncCreateRef(doer *models.User, repo *models.Repository, refType, refFullName string) | |||
NotifySyncDeleteRef(doer *models.User, repo *models.Repository, refType, refFullName string) | |||
} |
@@ -128,7 +128,7 @@ func (*NullNotifier) NotifyMigrateRepository(doer *models.User, u *models.User, | |||
} | |||
// NotifyPushCommits notifies commits pushed to notifiers | |||
func (*NullNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func (*NullNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
} | |||
// NotifyCreateRef notifies branch or tag creation to notifiers | |||
@@ -148,7 +148,7 @@ func (*NullNotifier) NotifyTransferRepository(doer *models.User, repo *models.Re | |||
} | |||
// NotifySyncPushCommits places a place holder function | |||
func (*NullNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func (*NullNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
} | |||
// NotifySyncCreateRef places a place holder function | |||
@@ -123,8 +123,8 @@ func (r *indexerNotifier) NotifyMigrateRepository(doer *models.User, u *models.U | |||
} | |||
} | |||
func (r *indexerNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
if setting.Indexer.RepoIndexerEnabled && refName == git.BranchPrefix+repo.DefaultBranch { | |||
func (r *indexerNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
if setting.Indexer.RepoIndexerEnabled && opts.RefFullName == git.BranchPrefix+repo.DefaultBranch { | |||
code_indexer.UpdateRepoIndexer(repo) | |||
} | |||
if err := stats_indexer.UpdateRepoIndexer(repo); err != nil { | |||
@@ -132,8 +132,8 @@ func (r *indexerNotifier) NotifyPushCommits(pusher *models.User, repo *models.Re | |||
} | |||
} | |||
func (r *indexerNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
if setting.Indexer.RepoIndexerEnabled && refName == git.BranchPrefix+repo.DefaultBranch { | |||
func (r *indexerNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
if setting.Indexer.RepoIndexerEnabled && opts.RefFullName == git.BranchPrefix+repo.DefaultBranch { | |||
code_indexer.UpdateRepoIndexer(repo) | |||
} | |||
if err := stats_indexer.UpdateRepoIndexer(repo); err != nil { | |||
@@ -236,9 +236,9 @@ func NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName | |||
} | |||
// NotifyPushCommits notifies commits pushed to notifiers | |||
func NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
for _, notifier := range notifiers { | |||
notifier.NotifyPushCommits(pusher, repo, refName, oldCommitID, newCommitID, commits) | |||
notifier.NotifyPushCommits(pusher, repo, opts, commits) | |||
} | |||
} | |||
@@ -257,9 +257,9 @@ func NotifyDeleteRef(pusher *models.User, repo *models.Repository, refType, refF | |||
} | |||
// NotifySyncPushCommits notifies commits pushed to notifiers | |||
func NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
for _, notifier := range notifiers { | |||
notifier.NotifySyncPushCommits(pusher, repo, refName, oldCommitID, newCommitID, commits) | |||
notifier.NotifySyncPushCommits(pusher, repo, opts, commits) | |||
} | |||
} | |||
@@ -548,7 +548,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m | |||
} | |||
} | |||
func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
apiPusher := convert.ToUser(pusher, false, false) | |||
apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) | |||
if err != nil { | |||
@@ -557,9 +557,9 @@ func (m *webhookNotifier) NotifyPushCommits(pusher *models.User, repo *models.Re | |||
} | |||
if err := webhook_module.PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{ | |||
Ref: refName, | |||
Before: oldCommitID, | |||
After: newCommitID, | |||
Ref: opts.RefFullName, | |||
Before: opts.OldCommitID, | |||
After: opts.NewCommitID, | |||
CompareURL: setting.AppURL + commits.CompareURL, | |||
Commits: apiCommits, | |||
Repo: repo.APIFormat(models.AccessModeOwner), | |||
@@ -776,7 +776,7 @@ func (m *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Rel | |||
sendReleaseHook(doer, rel, api.HookReleaseDeleted) | |||
} | |||
func (m *webhookNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, refName, oldCommitID, newCommitID string, commits *repository.PushCommits) { | |||
func (m *webhookNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { | |||
apiPusher := convert.ToUser(pusher, false, false) | |||
apiCommits, err := commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) | |||
if err != nil { | |||
@@ -785,9 +785,9 @@ func (m *webhookNotifier) NotifySyncPushCommits(pusher *models.User, repo *model | |||
} | |||
if err := webhook_module.PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{ | |||
Ref: refName, | |||
Before: oldCommitID, | |||
After: newCommitID, | |||
Ref: opts.RefFullName, | |||
Before: opts.OldCommitID, | |||
After: opts.NewCommitID, | |||
CompareURL: setting.AppURL + commits.CompareURL, | |||
Commits: apiCommits, | |||
Repo: repo.APIFormat(models.AccessModeOwner), | |||
@@ -0,0 +1,115 @@ | |||
// Copyright 2020 The Gitea Authors. All rights reserved. | |||
// Use of this source code is governed by a MIT-style | |||
// license that can be found in the LICENSE file. | |||
package repository | |||
import ( | |||
"path/filepath" | |||
"strings" | |||
"code.gitea.io/gitea/modules/git" | |||
"code.gitea.io/gitea/modules/setting" | |||
) | |||
// PushUpdateOptions defines the push update options | |||
type PushUpdateOptions struct { | |||
PusherID int64 | |||
PusherName string | |||
RepoUserName string | |||
RepoName string | |||
RefFullName string // branch, tag or other name to push | |||
OldCommitID string | |||
NewCommitID string | |||
} | |||
// IsNewRef return true if it's a first-time push to a branch, tag or etc. | |||
func (opts PushUpdateOptions) IsNewRef() bool { | |||
return opts.OldCommitID == git.EmptySHA | |||
} | |||
// IsDelRef return true if it's a deletion to a branch or tag | |||
func (opts PushUpdateOptions) IsDelRef() bool { | |||
return opts.NewCommitID == git.EmptySHA | |||
} | |||
// IsUpdateRef return true if it's an update operation | |||
func (opts PushUpdateOptions) IsUpdateRef() bool { | |||
return !opts.IsNewRef() && !opts.IsDelRef() | |||
} | |||
// IsTag return true if it's an operation to a tag | |||
func (opts PushUpdateOptions) IsTag() bool { | |||
return strings.HasPrefix(opts.RefFullName, git.TagPrefix) | |||
} | |||
// IsNewTag return true if it's a creation to a tag | |||
func (opts PushUpdateOptions) IsNewTag() bool { | |||
return opts.IsTag() && opts.IsNewRef() | |||
} | |||
// IsDelTag return true if it's a deletion to a tag | |||
func (opts PushUpdateOptions) IsDelTag() bool { | |||
return opts.IsTag() && opts.IsDelRef() | |||
} | |||
// IsBranch return true if it's a push to branch | |||
func (opts PushUpdateOptions) IsBranch() bool { | |||
return strings.HasPrefix(opts.RefFullName, git.BranchPrefix) | |||
} | |||
// IsNewBranch return true if it's the first-time push to a branch | |||
func (opts PushUpdateOptions) IsNewBranch() bool { | |||
return opts.IsBranch() && opts.IsNewRef() | |||
} | |||
// IsUpdateBranch return true if it's not the first push to a branch | |||
func (opts PushUpdateOptions) IsUpdateBranch() bool { | |||
return opts.IsBranch() && opts.IsUpdateRef() | |||
} | |||
// IsDelBranch return true if it's a deletion to a branch | |||
func (opts PushUpdateOptions) IsDelBranch() bool { | |||
return opts.IsBranch() && opts.IsDelRef() | |||
} | |||
// TagName returns simple tag name if it's an operation to a tag | |||
func (opts PushUpdateOptions) TagName() string { | |||
return opts.RefFullName[len(git.TagPrefix):] | |||
} | |||
// BranchName returns simple branch name if it's an operation to branch | |||
func (opts PushUpdateOptions) BranchName() string { | |||
return opts.RefFullName[len(git.BranchPrefix):] | |||
} | |||
// RefName returns simple name for ref | |||
func (opts PushUpdateOptions) RefName() string { | |||
if strings.HasPrefix(opts.RefFullName, git.TagPrefix) { | |||
return opts.RefFullName[len(git.TagPrefix):] | |||
} else if strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { | |||
return opts.RefFullName[len(git.BranchPrefix):] | |||
} | |||
return "" | |||
} | |||
// RepoFullName returns repo full name | |||
func (opts PushUpdateOptions) RepoFullName() string { | |||
return opts.RepoUserName + "/" + opts.RepoName | |||
} | |||
// IsForcePush detect if a push is a force push | |||
func IsForcePush(opts *PushUpdateOptions) (bool, error) { | |||
if !opts.IsUpdateBranch() { | |||
return false, nil | |||
} | |||
output, err := git.NewCommand("rev-list", "--max-count=1", opts.OldCommitID, "^"+opts.NewCommitID). | |||
RunInDir(filepath.Join(setting.RepoRootPath, opts.RepoUserName, opts.RepoName)) | |||
if err != nil { | |||
return false, err | |||
} else if len(output) > 0 { | |||
return true, nil | |||
} | |||
return false, nil | |||
} |
@@ -162,7 +162,7 @@ func DeleteBranch(ctx *context.APIContext) { | |||
// Don't return error below this | |||
if err := repo_service.PushUpdate( | |||
&repo_service.PushUpdateOptions{ | |||
&repo_module.PushUpdateOptions{ | |||
RefFullName: git.BranchPrefix + ctx.Repo.BranchName, | |||
OldCommitID: c.ID.String(), | |||
NewCommitID: git.EmptySHA, | |||
@@ -18,6 +18,7 @@ import ( | |||
"code.gitea.io/gitea/modules/git" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/private" | |||
repo_module "code.gitea.io/gitea/modules/repository" | |||
"code.gitea.io/gitea/modules/setting" | |||
"code.gitea.io/gitea/modules/util" | |||
pull_service "code.gitea.io/gitea/services/pull" | |||
@@ -375,7 +376,7 @@ func HookPostReceive(ctx *macaron.Context, opts private.HookOptions) { | |||
repoName := ctx.Params(":repo") | |||
var repo *models.Repository | |||
updates := make([]*repo_service.PushUpdateOptions, 0, len(opts.OldCommitIDs)) | |||
updates := make([]*repo_module.PushUpdateOptions, 0, len(opts.OldCommitIDs)) | |||
wasEmpty := false | |||
for i := range opts.OldCommitIDs { | |||
@@ -402,7 +403,7 @@ func HookPostReceive(ctx *macaron.Context, opts private.HookOptions) { | |||
wasEmpty = repo.IsEmpty | |||
} | |||
option := repo_service.PushUpdateOptions{ | |||
option := repo_module.PushUpdateOptions{ | |||
RefFullName: refFullName, | |||
OldCommitID: opts.OldCommitIDs[i], | |||
NewCommitID: opts.NewCommitIDs[i], | |||
@@ -120,7 +120,7 @@ func RestoreBranchPost(ctx *context.Context) { | |||
// Don't return error below this | |||
if err := repo_service.PushUpdate( | |||
&repo_service.PushUpdateOptions{ | |||
&repo_module.PushUpdateOptions{ | |||
RefFullName: git.BranchPrefix + deletedBranch.Name, | |||
OldCommitID: git.EmptySHA, | |||
NewCommitID: deletedBranch.Commit, | |||
@@ -157,7 +157,7 @@ func deleteBranch(ctx *context.Context, branchName string) error { | |||
// Don't return error below this | |||
if err := repo_service.PushUpdate( | |||
&repo_service.PushUpdateOptions{ | |||
&repo_module.PushUpdateOptions{ | |||
RefFullName: git.BranchPrefix + branchName, | |||
OldCommitID: commit.ID.String(), | |||
NewCommitID: git.EmptySHA, | |||
@@ -22,6 +22,7 @@ import ( | |||
"code.gitea.io/gitea/modules/git" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/notification" | |||
repo_module "code.gitea.io/gitea/modules/repository" | |||
"code.gitea.io/gitea/modules/setting" | |||
"code.gitea.io/gitea/modules/structs" | |||
"code.gitea.io/gitea/modules/upload" | |||
@@ -1185,7 +1186,7 @@ func CleanUpPullRequest(ctx *context.Context) { | |||
} | |||
if err := repo_service.PushUpdate( | |||
&repo_service.PushUpdateOptions{ | |||
&repo_module.PushUpdateOptions{ | |||
RefFullName: git.BranchPrefix + pr.HeadBranch, | |||
OldCommitID: branchCommitID, | |||
NewCommitID: git.EmptySHA, | |||
@@ -472,7 +472,11 @@ func syncMirror(repoID string) { | |||
theCommits.CompareURL = m.Repo.ComposeCompareURL(oldCommitID, newCommitID) | |||
notification.NotifySyncPushCommits(m.Repo.MustOwner(), m.Repo, result.refName, oldCommitID, newCommitID, theCommits) | |||
notification.NotifySyncPushCommits(m.Repo.MustOwner(), m.Repo, &repo_module.PushUpdateOptions{ | |||
RefFullName: result.refName, | |||
OldCommitID: oldCommitID, | |||
NewCommitID: newCommitID, | |||
}, theCommits) | |||
} | |||
log.Trace("SyncMirrors [repo: %-v]: done notifying updated branches/tags - now updating last commit time", m.Repo) | |||
@@ -43,8 +43,12 @@ func createTag(gitRepo *git.Repository, rel *models.Release) error { | |||
return err | |||
} | |||
notification.NotifyPushCommits( | |||
rel.Publisher, rel.Repo, git.TagPrefix+rel.TagName, | |||
git.EmptySHA, commit.ID.String(), repository.NewPushCommits()) | |||
rel.Publisher, rel.Repo, | |||
&repository.PushUpdateOptions{ | |||
RefFullName: git.TagPrefix + rel.TagName, | |||
OldCommitID: git.EmptySHA, | |||
NewCommitID: commit.ID.String(), | |||
}, repository.NewPushCommits()) | |||
notification.NotifyCreateRef(rel.Publisher, rel.Repo, "tag", git.TagPrefix+rel.TagName) | |||
rel.CreatedUnix = timeutil.TimeStampNow() | |||
} | |||
@@ -8,7 +8,6 @@ import ( | |||
"container/list" | |||
"encoding/json" | |||
"fmt" | |||
"strings" | |||
"time" | |||
"code.gitea.io/gitea/models" | |||
@@ -24,114 +23,13 @@ import ( | |||
pull_service "code.gitea.io/gitea/services/pull" | |||
) | |||
// PushUpdateOptions defines the push update options | |||
type PushUpdateOptions struct { | |||
PusherID int64 | |||
PusherName string | |||
RepoUserName string | |||
RepoName string | |||
RefFullName string // branch, tag or other name to push | |||
OldCommitID string | |||
NewCommitID string | |||
} | |||
// IsNewRef return true if it's a first-time push to a branch, tag or etc. | |||
func (opts PushUpdateOptions) IsNewRef() bool { | |||
return opts.OldCommitID == git.EmptySHA | |||
} | |||
// IsDelRef return true if it's a deletion to a branch or tag | |||
func (opts PushUpdateOptions) IsDelRef() bool { | |||
return opts.NewCommitID == git.EmptySHA | |||
} | |||
// IsUpdateRef return true if it's an update operation | |||
func (opts PushUpdateOptions) IsUpdateRef() bool { | |||
return !opts.IsNewRef() && !opts.IsDelRef() | |||
} | |||
// IsTag return true if it's an operation to a tag | |||
func (opts PushUpdateOptions) IsTag() bool { | |||
return strings.HasPrefix(opts.RefFullName, git.TagPrefix) | |||
} | |||
// IsNewTag return true if it's a creation to a tag | |||
func (opts PushUpdateOptions) IsNewTag() bool { | |||
return opts.IsTag() && opts.IsNewRef() | |||
} | |||
// IsDelTag return true if it's a deletion to a tag | |||
func (opts PushUpdateOptions) IsDelTag() bool { | |||
return opts.IsTag() && opts.IsDelRef() | |||
} | |||
// IsBranch return true if it's a push to branch | |||
func (opts PushUpdateOptions) IsBranch() bool { | |||
return strings.HasPrefix(opts.RefFullName, git.BranchPrefix) | |||
} | |||
// IsNewBranch return true if it's the first-time push to a branch | |||
func (opts PushUpdateOptions) IsNewBranch() bool { | |||
return opts.IsBranch() && opts.IsNewRef() | |||
} | |||
// IsUpdateBranch return true if it's not the first push to a branch | |||
func (opts PushUpdateOptions) IsUpdateBranch() bool { | |||
return opts.IsBranch() && opts.IsUpdateRef() | |||
} | |||
// IsDelBranch return true if it's a deletion to a branch | |||
func (opts PushUpdateOptions) IsDelBranch() bool { | |||
return opts.IsBranch() && opts.IsDelRef() | |||
} | |||
// TagName returns simple tag name if it's an operation to a tag | |||
func (opts PushUpdateOptions) TagName() string { | |||
return opts.RefFullName[len(git.TagPrefix):] | |||
} | |||
// BranchName returns simple branch name if it's an operation to branch | |||
func (opts PushUpdateOptions) BranchName() string { | |||
return opts.RefFullName[len(git.BranchPrefix):] | |||
} | |||
// RefName returns simple name for ref | |||
func (opts PushUpdateOptions) RefName() string { | |||
if strings.HasPrefix(opts.RefFullName, git.TagPrefix) { | |||
return opts.RefFullName[len(git.TagPrefix):] | |||
} else if strings.HasPrefix(opts.RefFullName, git.BranchPrefix) { | |||
return opts.RefFullName[len(git.BranchPrefix):] | |||
} | |||
return "" | |||
} | |||
// RepoFullName returns repo full name | |||
func (opts PushUpdateOptions) RepoFullName() string { | |||
return opts.RepoUserName + "/" + opts.RepoName | |||
} | |||
// isForcePush detect if a push is a force push | |||
func isForcePush(repoPath string, opts *PushUpdateOptions) (bool, error) { | |||
if !opts.IsUpdateBranch() { | |||
return false, nil | |||
} | |||
output, err := git.NewCommand("rev-list", "--max-count=1", opts.OldCommitID, "^"+opts.NewCommitID).RunInDir(repoPath) | |||
if err != nil { | |||
return false, err | |||
} else if len(output) > 0 { | |||
return true, nil | |||
} | |||
return false, nil | |||
} | |||
// pushQueue represents a queue to handle update pull request tests | |||
var pushQueue queue.Queue | |||
// handle passed PR IDs and test the PRs | |||
func handle(data ...queue.Data) { | |||
for _, datum := range data { | |||
opts := datum.([]*PushUpdateOptions) | |||
opts := datum.([]*repo_module.PushUpdateOptions) | |||
if err := pushUpdates(opts); err != nil { | |||
log.Error("pushUpdate failed: %v", err) | |||
} | |||
@@ -139,7 +37,7 @@ func handle(data ...queue.Data) { | |||
} | |||
func initPushQueue() error { | |||
pushQueue = queue.CreateQueue("push_update", handle, []*PushUpdateOptions{}).(queue.Queue) | |||
pushQueue = queue.CreateQueue("push_update", handle, []*repo_module.PushUpdateOptions{}).(queue.Queue) | |||
if pushQueue == nil { | |||
return fmt.Errorf("Unable to create push_update Queue") | |||
} | |||
@@ -149,12 +47,12 @@ func initPushQueue() error { | |||
} | |||
// PushUpdate is an alias of PushUpdates for single push update options | |||
func PushUpdate(opts *PushUpdateOptions) error { | |||
return PushUpdates([]*PushUpdateOptions{opts}) | |||
func PushUpdate(opts *repo_module.PushUpdateOptions) error { | |||
return PushUpdates([]*repo_module.PushUpdateOptions{opts}) | |||
} | |||
// PushUpdates adds a push update to push queue | |||
func PushUpdates(opts []*PushUpdateOptions) error { | |||
func PushUpdates(opts []*repo_module.PushUpdateOptions) error { | |||
if len(opts) == 0 { | |||
return nil | |||
} | |||
@@ -169,7 +67,7 @@ func PushUpdates(opts []*PushUpdateOptions) error { | |||
} | |||
// pushUpdates generates push action history feeds for push updating multiple refs | |||
func pushUpdates(optsList []*PushUpdateOptions) error { | |||
func pushUpdates(optsList []*repo_module.PushUpdateOptions) error { | |||
if len(optsList) == 0 { | |||
return nil | |||
} | |||
@@ -238,7 +136,7 @@ func pushUpdates(optsList []*PushUpdateOptions) error { | |||
return fmt.Errorf("newCommit.CommitsBeforeUntil: %v", err) | |||
} | |||
isForce, err := isForcePush(repo.RepoPath(), opts) | |||
isForce, err := repo_module.IsForcePush(opts) | |||
if err != nil { | |||
log.Error("isForcePush %s/%s failed: %v", repo.ID, branch, err) | |||
} | |||
@@ -293,7 +191,7 @@ func pushUpdates(optsList []*PushUpdateOptions) error { | |||
// commitRepoActionOptions represent options of a new commit action. | |||
type commitRepoActionOptions struct { | |||
PushUpdateOptions | |||
repo_module.PushUpdateOptions | |||
Pusher *models.User | |||
RepoOwnerID int64 | |||
@@ -395,7 +293,7 @@ func commitRepoAction(repo *models.Repository, gitRepo *git.Repository, optsList | |||
} | |||
if isHookEventPush { | |||
notification.NotifyPushCommits(opts.Pusher, repo, opts.RefFullName, opts.OldCommitID, opts.NewCommitID, opts.Commits) | |||
notification.NotifyPushCommits(opts.Pusher, repo, &opts.PushUpdateOptions, opts.Commits) | |||
} | |||
} | |||
@@ -32,7 +32,7 @@ func TestCommitRepoAction(t *testing.T) { | |||
userID: 2, | |||
repositoryID: 16, | |||
commitRepoActionOptions: commitRepoActionOptions{ | |||
PushUpdateOptions: PushUpdateOptions{ | |||
PushUpdateOptions: repo_module.PushUpdateOptions{ | |||
RefFullName: "refName", | |||
OldCommitID: "oldCommitID", | |||
NewCommitID: "newCommitID", | |||
@@ -68,7 +68,7 @@ func TestCommitRepoAction(t *testing.T) { | |||
userID: 2, | |||
repositoryID: 1, | |||
commitRepoActionOptions: commitRepoActionOptions{ | |||
PushUpdateOptions: PushUpdateOptions{ | |||
PushUpdateOptions: repo_module.PushUpdateOptions{ | |||
RefFullName: git.TagPrefix + "v1.1", | |||
OldCommitID: git.EmptySHA, | |||
NewCommitID: "newCommitID", | |||
@@ -84,7 +84,7 @@ func TestCommitRepoAction(t *testing.T) { | |||
userID: 2, | |||
repositoryID: 1, | |||
commitRepoActionOptions: commitRepoActionOptions{ | |||
PushUpdateOptions: PushUpdateOptions{ | |||
PushUpdateOptions: repo_module.PushUpdateOptions{ | |||
RefFullName: git.TagPrefix + "v1.1", | |||
OldCommitID: "oldCommitID", | |||
NewCommitID: git.EmptySHA, | |||
@@ -100,7 +100,7 @@ func TestCommitRepoAction(t *testing.T) { | |||
userID: 2, | |||
repositoryID: 1, | |||
commitRepoActionOptions: commitRepoActionOptions{ | |||
PushUpdateOptions: PushUpdateOptions{ | |||
PushUpdateOptions: repo_module.PushUpdateOptions{ | |||
RefFullName: git.BranchPrefix + "feature/1", | |||
OldCommitID: "oldCommitID", | |||
NewCommitID: git.EmptySHA, | |||