aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2024-04-22 14:25:07 +0800
committerGitHub <noreply@github.com>2024-04-22 14:25:07 +0800
commit5dbe7496c7c43b54cc368c6f0bc6419aeac42d18 (patch)
tree9c3357d69e628abc581d3e920f79655ecf20acd6
parentfc376c863aff1d138541156e6b4b612d96305906 (diff)
downloadgitea-5dbe7496c7c43b54cc368c6f0bc6419aeac42d18.tar.gz
gitea-5dbe7496c7c43b54cc368c6f0bc6419aeac42d18.zip
Add --skip-db option to dump command (#30613) (#30630)
Backport #30613 by @kemzeb Attempts to resolve #28720. Co-authored-by: Kemal Zebari <60799661+kemzeb@users.noreply.github.com>
-rw-r--r--cmd/dump.go58
1 files changed, 34 insertions, 24 deletions
diff --git a/cmd/dump.go b/cmd/dump.go
index da0a51d9ce..ececc80f72 100644
--- a/cmd/dump.go
+++ b/cmd/dump.go
@@ -87,6 +87,10 @@ var CmdDump = &cli.Command{
Name: "skip-index",
Usage: "Skip bleve index data",
},
+ &cli.BoolFlag{
+ Name: "skip-db",
+ Usage: "Skip database",
+ },
&cli.StringFlag{
Name: "type",
Usage: fmt.Sprintf(`Dump output format, default to "zip", supported types: %s`, strings.Join(dump.SupportedOutputTypes, ", ")),
@@ -185,35 +189,41 @@ func runDump(ctx *cli.Context) error {
}
}
- tmpDir := ctx.String("tempdir")
- if _, err := os.Stat(tmpDir); os.IsNotExist(err) {
- fatal("Path does not exist: %s", tmpDir)
- }
+ if ctx.Bool("skip-db") {
+ // Ensure that we don't dump the database file that may reside in setting.AppDataPath or elsewhere.
+ dumper.GlobalExcludeAbsPath(setting.Database.Path)
+ log.Info("Skipping database")
+ } else {
+ tmpDir := ctx.String("tempdir")
+ if _, err := os.Stat(tmpDir); os.IsNotExist(err) {
+ fatal("Path does not exist: %s", tmpDir)
+ }
- dbDump, err := os.CreateTemp(tmpDir, "gitea-db.sql")
- if err != nil {
- fatal("Failed to create tmp file: %v", err)
- }
- defer func() {
- _ = dbDump.Close()
- if err := util.Remove(dbDump.Name()); err != nil {
- log.Warn("Unable to remove temporary file: %s: Error: %v", dbDump.Name(), err)
+ dbDump, err := os.CreateTemp(tmpDir, "gitea-db.sql")
+ if err != nil {
+ fatal("Failed to create tmp file: %v", err)
}
- }()
+ defer func() {
+ _ = dbDump.Close()
+ if err := util.Remove(dbDump.Name()); err != nil {
+ log.Warn("Unable to remove temporary file: %s: Error: %v", dbDump.Name(), err)
+ }
+ }()
- targetDBType := ctx.String("database")
- if len(targetDBType) > 0 && targetDBType != setting.Database.Type.String() {
- log.Info("Dumping database %s => %s...", setting.Database.Type, targetDBType)
- } else {
- log.Info("Dumping database...")
- }
+ targetDBType := ctx.String("database")
+ if len(targetDBType) > 0 && targetDBType != setting.Database.Type.String() {
+ log.Info("Dumping database %s => %s...", setting.Database.Type, targetDBType)
+ } else {
+ log.Info("Dumping database...")
+ }
- if err := db.DumpDatabase(dbDump.Name(), targetDBType); err != nil {
- fatal("Failed to dump database: %v", err)
- }
+ if err := db.DumpDatabase(dbDump.Name(), targetDBType); err != nil {
+ fatal("Failed to dump database: %v", err)
+ }
- if err = dumper.AddFile("gitea-db.sql", dbDump.Name()); err != nil {
- fatal("Failed to include gitea-db.sql: %v", err)
+ if err = dumper.AddFile("gitea-db.sql", dbDump.Name()); err != nil {
+ fatal("Failed to include gitea-db.sql: %v", err)
+ }
}
log.Info("Adding custom configuration file from %s", setting.CustomConf)