aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2025-01-12 02:46:37 -0800
committerGitHub <noreply@github.com>2025-01-12 18:46:37 +0800
commitbe4e961240883778c44d9651eaaf9ab8723bbbb0 (patch)
tree8d0b140f2aaf35917d8c3683750812a2f3f9a000
parent9024b7993334d7ea16d184138b38c7f29b092439 (diff)
downloadgitea-be4e961240883778c44d9651eaaf9ab8723bbbb0.tar.gz
gitea-be4e961240883778c44d9651eaaf9ab8723bbbb0.zip
Fix mirror bug (#33224)
Fix #33200 Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--modules/git/ref_test.go2
-rw-r--r--services/mirror/mirror_pull.go15
2 files changed, 16 insertions, 1 deletions
diff --git a/modules/git/ref_test.go b/modules/git/ref_test.go
index 58f679b7d6..1fd33b5163 100644
--- a/modules/git/ref_test.go
+++ b/modules/git/ref_test.go
@@ -20,6 +20,8 @@ func TestRefName(t *testing.T) {
// Test pull names
assert.Equal(t, "1", RefName("refs/pull/1/head").PullName())
+ assert.True(t, RefName("refs/pull/1/head").IsPull())
+ assert.True(t, RefName("refs/pull/1/merge").IsPull())
assert.Equal(t, "my/pull", RefName("refs/pull/my/pull/head").PullName())
// Test for branch names
diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go
index 948222a436..24605cfae0 100644
--- a/services/mirror/mirror_pull.go
+++ b/services/mirror/mirror_pull.go
@@ -87,6 +87,7 @@ type mirrorSyncResult struct {
/*
// * [new tag] v0.1.8 -> v0.1.8
// * [new branch] master -> origin/master
+// * [new ref] refs/pull/2/head -> refs/pull/2/head"
// - [deleted] (none) -> origin/test // delete a branch
// - [deleted] (none) -> 1 // delete a tag
// 957a993..a87ba5f test -> origin/test
@@ -117,6 +118,11 @@ func parseRemoteUpdateOutput(output, remoteName string) []*mirrorSyncResult {
refName: git.RefNameFromBranch(refName),
oldCommitID: gitShortEmptySha,
})
+ case strings.HasPrefix(lines[i], " * [new ref]"): // new reference
+ results = append(results, &mirrorSyncResult{
+ refName: git.RefName(refName),
+ oldCommitID: gitShortEmptySha,
+ })
case strings.HasPrefix(lines[i], " - "): // Delete reference
isTag := !strings.HasPrefix(refName, remoteName+"/")
var refFullName git.RefName
@@ -159,8 +165,15 @@ func parseRemoteUpdateOutput(output, remoteName string) []*mirrorSyncResult {
log.Error("Expect two SHAs but not what found: %q", lines[i])
continue
}
+ var refFullName git.RefName
+ if strings.HasPrefix(refName, "refs/") {
+ refFullName = git.RefName(refName)
+ } else {
+ refFullName = git.RefNameFromBranch(strings.TrimPrefix(refName, remoteName+"/"))
+ }
+
results = append(results, &mirrorSyncResult{
- refName: git.RefNameFromBranch(strings.TrimPrefix(refName, remoteName+"/")),
+ refName: refFullName,
oldCommitID: shas[0],
newCommitID: shas[1],
})