diff --git a/modules/repository/push.go b/modules/repository/push.go index e349b5109..11272f883 100644 --- a/modules/repository/push.go +++ b/modules/repository/push.go @@ -23,67 +23,67 @@ type PushUpdateOptions struct { } // IsNewRef return true if it's a first-time push to a branch, tag or etc. -func (opts PushUpdateOptions) IsNewRef() bool { +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 { +func (opts *PushUpdateOptions) IsDelRef() bool { return opts.NewCommitID == git.EmptySHA } // IsUpdateRef return true if it's an update operation -func (opts PushUpdateOptions) IsUpdateRef() bool { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +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 { +func (opts *PushUpdateOptions) BranchName() string { return opts.RefFullName[len(git.BranchPrefix):] } // RefName returns simple name for ref -func (opts PushUpdateOptions) RefName() string { +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) { @@ -93,7 +93,7 @@ func (opts PushUpdateOptions) RefName() string { } // RepoFullName returns repo full name -func (opts PushUpdateOptions) RepoFullName() string { +func (opts *PushUpdateOptions) RepoFullName() string { return opts.RepoUserName + "/" + opts.RepoName } diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go index 4dbe74a9a..0d559250e 100644 --- a/routers/private/hook_post_receive.go +++ b/routers/private/hook_post_receive.go @@ -57,7 +57,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) { wasEmpty = repo.IsEmpty } - option := repo_module.PushUpdateOptions{ + option := &repo_module.PushUpdateOptions{ RefFullName: refFullName, OldCommitID: opts.OldCommitIDs[i], NewCommitID: opts.NewCommitIDs[i], @@ -66,11 +66,11 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) { RepoUserName: ownerName, RepoName: repoName, } - updates = append(updates, &option) + updates = append(updates, option) if repo.IsEmpty && option.IsBranch() && (option.BranchName() == "master" || option.BranchName() == "main") { // put the master/main branch first copy(updates[1:], updates) - updates[0] = &option + updates[0] = option } } }