From 656456441ca09de27ffb44d7a8042db811ff989e Mon Sep 17 00:00:00 2001
From: Zsombor <gzsombor@users.noreply.github.com>
Date: Sun, 13 Jan 2019 22:52:26 +0100
Subject: [PATCH] Add flag to skip repository dumping (#5695)

---
 cmd/dump.go                            | 36 ++++++++++++++++----------
 docs/content/doc/usage/command-line.md |  2 ++
 2 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/cmd/dump.go b/cmd/dump.go
index bbefda63ee..a895785295 100644
--- a/cmd/dump.go
+++ b/cmd/dump.go
@@ -48,6 +48,10 @@ It can be used for backup and capture Gitea server image to send to maintainer`,
 			Name:  "database, d",
 			Usage: "Specify the database SQL syntax",
 		},
+		cli.BoolFlag{
+			Name:  "skip-repository, R",
+			Usage: "Skip the repository dumping",
+		},
 	},
 }
 
@@ -79,13 +83,27 @@ func runDump(ctx *cli.Context) error {
 		os.Setenv("TMPDIR", tmpWorkDir)
 	}
 
-	reposDump := path.Join(tmpWorkDir, "gitea-repo.zip")
 	dbDump := path.Join(tmpWorkDir, "gitea-db.sql")
 
-	log.Printf("Dumping local repositories...%s", setting.RepoRootPath)
+	fileName := fmt.Sprintf("gitea-dump-%d.zip", time.Now().Unix())
+	log.Printf("Packing dump files...")
+	z, err := zip.Create(fileName)
+	if err != nil {
+		log.Fatalf("Failed to create %s: %v", fileName, err)
+	}
 	zip.Verbose = ctx.Bool("verbose")
-	if err := zip.PackTo(setting.RepoRootPath, reposDump, true); err != nil {
-		log.Fatalf("Failed to dump local repositories: %v", err)
+
+	if ctx.IsSet("skip-repository") {
+		log.Printf("Skip dumping local repositories")
+	} else {
+		log.Printf("Dumping local repositories...%s", setting.RepoRootPath)
+		reposDump := path.Join(tmpWorkDir, "gitea-repo.zip")
+		if err := zip.PackTo(setting.RepoRootPath, reposDump, true); err != nil {
+			log.Fatalf("Failed to dump local repositories: %v", err)
+		}
+		if err := z.AddFile("gitea-repo.zip", reposDump); err != nil {
+			log.Fatalf("Failed to include gitea-repo.zip: %v", err)
+		}
 	}
 
 	targetDBType := ctx.String("database")
@@ -99,16 +117,6 @@ func runDump(ctx *cli.Context) error {
 		log.Fatalf("Failed to dump database: %v", err)
 	}
 
-	fileName := fmt.Sprintf("gitea-dump-%d.zip", time.Now().Unix())
-	log.Printf("Packing dump files...")
-	z, err := zip.Create(fileName)
-	if err != nil {
-		log.Fatalf("Failed to create %s: %v", fileName, err)
-	}
-
-	if err := z.AddFile("gitea-repo.zip", reposDump); err != nil {
-		log.Fatalf("Failed to include gitea-repo.zip: %v", err)
-	}
 	if err := z.AddFile("gitea-db.sql", dbDump); err != nil {
 		log.Fatalf("Failed to include gitea-db.sql: %v", err)
 	}
diff --git a/docs/content/doc/usage/command-line.md b/docs/content/doc/usage/command-line.md
index ed08e24a4c..7c2fd5a46b 100644
--- a/docs/content/doc/usage/command-line.md
+++ b/docs/content/doc/usage/command-line.md
@@ -149,6 +149,8 @@ in the current directory.
 - Options:
     - `--config path`, `-c path`: Gitea configuration file path. Optional. (default: custom/conf/app.ini).
     - `--tempdir path`, `-t path`: Path to the temporary directory used. Optional. (default: /tmp).
+    - `--skip-repository`, `-R`: Skip the repository dumping. Optional.
+    - `--database`, `-d`: Specify the database SQL syntax. Optional.
     - `--verbose`, `-v`: If provided, shows additional details. Optional.
 - Examples:
     - `gitea dump`