Skip to content

Commit df4483e

Browse files
committed
fix
1 parent 4a18c72 commit df4483e

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

modules/git/git.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ const RequiredVersion = "2.0.0" // the minimum Git version required
2626
type Features struct {
2727
gitVersion *version.Version
2828

29-
UsingGogit bool
30-
SupportProcReceive bool // >= 2.29
31-
SupportHashSha256 bool // >= 2.42, SHA-256 repositories no longer an ‘experimental curiosity’
32-
SupportedObjectFormats []ObjectFormat // sha1, sha256
29+
UsingGogit bool
30+
SupportProcReceive bool // >= 2.29
31+
SupportHashSha256 bool // >= 2.42, SHA-256 repositories no longer an ‘experimental curiosity’
32+
SupportedObjectFormats []ObjectFormat // sha1, sha256
33+
NewExitStatusForRemoteNotExist bool // >= 2.30
3334
}
3435

3536
var (
@@ -77,6 +78,7 @@ func loadGitVersionFeatures() (*Features, error) {
7778
if features.SupportHashSha256 {
7879
features.SupportedObjectFormats = append(features.SupportedObjectFormats, Sha256ObjectFormat)
7980
}
81+
features.NewExitStatusForRemoteNotExist = features.CheckVersionAtLeast("2.30")
8082
return features, nil
8183
}
8284

@@ -218,3 +220,12 @@ func InitFull(ctx context.Context) (err error) {
218220

219221
return syncGitConfig()
220222
}
223+
224+
// RemoteNotExistPrefix returns the prefix of the error message when a remote does not exist.
225+
// see: https://github.com/go-gitea/gitea/issues/32889#issuecomment-2571848216
226+
func RemoteNotExistPrefix() string {
227+
if DefaultFeatures().NewExitStatusForRemoteNotExist {
228+
return "exit status 2 - error: No such remote "
229+
}
230+
return "exit status 128 - fatal: No such remote "
231+
}

services/mirror/mirror_pull.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error
4141
repoPath := m.GetRepository(ctx).RepoPath()
4242
// Remove old remote
4343
_, _, err = git.NewCommand(ctx, "remote", "rm").AddDynamicArguments(remoteName).RunStdString(&git.RunOpts{Dir: repoPath})
44-
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
44+
if err != nil && !strings.HasPrefix(err.Error(), git.RemoteNotExistPrefix()) {
4545
return err
4646
}
4747

4848
cmd := git.NewCommand(ctx, "remote", "add").AddDynamicArguments(remoteName).AddArguments("--mirror=fetch").AddDynamicArguments(addr)
4949
_, _, err = cmd.RunStdString(&git.RunOpts{Dir: repoPath})
50-
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
50+
if err != nil && !strings.HasPrefix(err.Error(), git.RemoteNotExistPrefix()) {
5151
return err
5252
}
5353

@@ -56,13 +56,13 @@ func UpdateAddress(ctx context.Context, m *repo_model.Mirror, addr string) error
5656
wikiRemotePath := repo_module.WikiRemoteURL(ctx, addr)
5757
// Remove old remote of wiki
5858
_, _, err = git.NewCommand(ctx, "remote", "rm").AddDynamicArguments(remoteName).RunStdString(&git.RunOpts{Dir: wikiPath})
59-
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
59+
if err != nil && !strings.HasPrefix(err.Error(), git.RemoteNotExistPrefix()) {
6060
return err
6161
}
6262

6363
cmd = git.NewCommand(ctx, "remote", "add").AddDynamicArguments(remoteName).AddArguments("--mirror=fetch").AddDynamicArguments(wikiRemotePath)
6464
_, _, err = cmd.RunStdString(&git.RunOpts{Dir: wikiPath})
65-
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
65+
if err != nil && !strings.HasPrefix(err.Error(), git.RemoteNotExistPrefix()) {
6666
return err
6767
}
6868
}

services/repository/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ func CleanUpMigrateInfo(ctx context.Context, repo *repo_model.Repository) (*repo
276276
}
277277

278278
_, _, err := git.NewCommand(ctx, "remote", "rm", "origin").RunStdString(&git.RunOpts{Dir: repoPath})
279-
if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") {
279+
if err != nil && !strings.HasPrefix(err.Error(), git.RemoteNotExistPrefix()) {
280280
return repo, fmt.Errorf("CleanUpMigrateInfo: %w", err)
281281
}
282282

0 commit comments

Comments
 (0)