mirror of https://github.com/gogs/gogs.git
mirror: trigger additional push webhook on new branch (#5508)
This commit fixes issue #5473 and makes a new branch behave like a push event and trigger the appropriate webhook.pull/5585/head
parent
81effe674d
commit
f47f9ceade
|
@ -5,6 +5,7 @@
|
||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"container/list"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -211,7 +212,6 @@ func parseRemoteUpdateOutput(output string) []*mirrorSyncResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
refName := lines[i][idx+3:]
|
refName := lines[i][idx+3:]
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(lines[i], " * "): // New reference
|
case strings.HasPrefix(lines[i], " * "): // New reference
|
||||||
results = append(results, &mirrorSyncResult{
|
results = append(results, &mirrorSyncResult{
|
||||||
|
@ -403,14 +403,6 @@ func SyncMirrors() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create reference
|
|
||||||
if result.oldCommitID == GIT_SHORT_EMPTY_SHA {
|
|
||||||
if err = MirrorSyncCreateAction(m.Repo, result.refName); err != nil {
|
|
||||||
log.Error(2, "MirrorSyncCreateAction [repo_id: %d]: %v", m.RepoID, err)
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete reference
|
// Delete reference
|
||||||
if result.newCommitID == GIT_SHORT_EMPTY_SHA {
|
if result.newCommitID == GIT_SHORT_EMPTY_SHA {
|
||||||
if err = MirrorSyncDeleteAction(m.Repo, result.refName); err != nil {
|
if err = MirrorSyncDeleteAction(m.Repo, result.refName); err != nil {
|
||||||
|
@ -419,22 +411,55 @@ func SyncMirrors() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// New reference
|
||||||
|
isNewRef := false
|
||||||
|
if result.oldCommitID == GIT_SHORT_EMPTY_SHA {
|
||||||
|
if err = MirrorSyncCreateAction(m.Repo, result.refName); err != nil {
|
||||||
|
log.Error(2, "MirrorSyncCreateAction [repo_id: %d]: %v", m.RepoID, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
isNewRef = true
|
||||||
|
}
|
||||||
|
|
||||||
// Push commits
|
// Push commits
|
||||||
oldCommitID, err := git.GetFullCommitID(gitRepo.Path, result.oldCommitID)
|
var commits *list.List
|
||||||
|
var oldCommitID string
|
||||||
|
var newCommitID string
|
||||||
|
if !isNewRef {
|
||||||
|
oldCommitID, err = git.GetFullCommitID(gitRepo.Path, result.oldCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
newCommitID, err := git.GetFullCommitID(gitRepo.Path, result.newCommitID)
|
newCommitID, err = git.GetFullCommitID(gitRepo.Path, result.newCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
commits, err := gitRepo.CommitsBetweenIDs(newCommitID, oldCommitID)
|
commits, err = gitRepo.CommitsBetweenIDs(newCommitID, oldCommitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(2, "CommitsBetweenIDs [repo_id: %d, new_commit_id: %s, old_commit_id: %s]: %v", m.RepoID, newCommitID, oldCommitID, err)
|
log.Error(2, "CommitsBetweenIDs [repo_id: %d, new_commit_id: %s, old_commit_id: %s]: %v", m.RepoID, newCommitID, oldCommitID, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
refNewCommitID, err := gitRepo.GetBranchCommitID(result.refName)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(2, "GetFullCommitID [%d]: %v", m.RepoID, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if newCommit, err := gitRepo.GetCommit(refNewCommitID); err != nil {
|
||||||
|
log.Error(2, "GetCommit [repo_id: %d, commit_id: %s]: %v", m.RepoID, refNewCommitID, err)
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
// TODO: Get the commits for the new ref until the closest ancestor branch like Github does
|
||||||
|
commits, err = newCommit.CommitsBeforeLimit(10)
|
||||||
|
if err != nil {
|
||||||
|
log.Error(2, "CommitsBeforeLimit [repo_id: %d, commit_id: %s]: %v", m.RepoID, refNewCommitID, err)
|
||||||
|
}
|
||||||
|
oldCommitID = git.EMPTY_SHA
|
||||||
|
newCommitID = refNewCommitID
|
||||||
|
}
|
||||||
|
}
|
||||||
if err = MirrorSyncPushAction(m.Repo, MirrorSyncPushActionOptions{
|
if err = MirrorSyncPushAction(m.Repo, MirrorSyncPushActionOptions{
|
||||||
RefName: result.refName,
|
RefName: result.refName,
|
||||||
OldCommitID: oldCommitID,
|
OldCommitID: oldCommitID,
|
||||||
|
|
Loading…
Reference in New Issue