aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2023-06-05 18:05:31 +0800
committerGitHub <noreply@github.com>2023-06-05 18:05:31 +0800
commit3d1fda737bc36e80a670f856fd85f6b884872b73 (patch)
treeab2d9a46730324b16c663bf38dc2409f303a1a5e
parentd851bd9a6b469019f9593ed21b8216a12329710a (diff)
downloadgitea-3d1fda737bc36e80a670f856fd85f6b884872b73.tar.gz
gitea-3d1fda737bc36e80a670f856fd85f6b884872b73.zip
Use git command instead of the ini package to remove the `origin` remote (#25066)
-rw-r--r--modules/repository/repo.go21
1 files changed, 9 insertions, 12 deletions
diff --git a/modules/repository/repo.go b/modules/repository/repo.go
index 3991e9ad99..bcb43f15e1 100644
--- a/modules/repository/repo.go
+++ b/modules/repository/repo.go
@@ -9,7 +9,6 @@ import (
"fmt"
"io"
"net/http"
- "path"
"strings"
"time"
@@ -26,8 +25,6 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
-
- "gopkg.in/ini.v1" //nolint:depguard
)
/*
@@ -240,14 +237,14 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
// cleanUpMigrateGitConfig removes mirror info which prevents "push --all".
// This also removes possible user credentials.
-func cleanUpMigrateGitConfig(configPath string) error {
- cfg, err := ini.Load(configPath) // FIXME: the ini package doesn't really work with git config files
- if err != nil {
- return fmt.Errorf("open config file: %w", err)
- }
- cfg.DeleteSection("remote \"origin\"")
- if err = cfg.SaveToIndent(configPath, "\t"); err != nil {
- return fmt.Errorf("save config file: %w", err)
+func cleanUpMigrateGitConfig(ctx context.Context, repoPath string) error {
+ cmd := git.NewCommand(ctx, "remote", "rm", "origin")
+ // if the origin does not exist
+ _, stderr, err := cmd.RunStdString(&git.RunOpts{
+ Dir: repoPath,
+ })
+ if err != nil && !strings.HasPrefix(stderr, "fatal: No such remote") {
+ return err
}
return nil
}
@@ -270,7 +267,7 @@ func CleanUpMigrateInfo(ctx context.Context, repo *repo_model.Repository) (*repo
}
if repo.HasWiki() {
- if err := cleanUpMigrateGitConfig(path.Join(repo.WikiPath(), "config")); err != nil {
+ if err := cleanUpMigrateGitConfig(ctx, repo.WikiPath()); err != nil {
return repo, fmt.Errorf("cleanUpMigrateGitConfig (wiki): %w", err)
}
}