Browse Source

command dump

Unknown 11 years ago
parent
commit
a641854cad
7 changed files with 43 additions and 28 deletions
  1. 18 6
      cmd/dump.go
  2. 5 6
      cmd/fix.go
  3. 5 6
      cmd/serve.go
  4. 5 6
      cmd/update.go
  5. 2 3
      cmd/web.go
  6. 5 0
      models/models.go
  7. 3 1
      modules/base/tool.go

+ 18 - 6
cmd/dump.go

@@ -12,22 +12,23 @@ import (
 	"github.com/Unknwon/cae/zip"
 	"github.com/codegangsta/cli"
 
+	"github.com/gogits/gogs/models"
 	"github.com/gogits/gogs/modules/base"
 )
 
 var CmdDump = cli.Command{
 	Name:  "dump",
-	Usage: "Dump Gogs files except database",
-	Description: `
-Dump compresses all related files into zip file except database,
-it can be used for backup and capture Gogs server image to send
-to maintainer`,
+	Usage: "Dump Gogs files and database",
+	Description: `Dump compresses all related files and database into zip file.
+It can be used for backup and capture Gogs server image to send to maintainer`,
 	Action: runDump,
 	Flags:  []cli.Flag{},
 }
 
 func runDump(*cli.Context) {
 	base.NewConfigContext()
+	models.LoadModelsConfig()
+	models.SetEngine()
 
 	log.Printf("Dumping local repositories...%s", base.RepoRootPath)
 	zip.Verbose = false
@@ -36,6 +37,13 @@ func runDump(*cli.Context) {
 		log.Fatalf("Fail to dump local repositories: %v", err)
 	}
 
+	log.Printf("Dumping database...")
+	defer os.Remove("gogs-db.sql")
+	if err := models.DumpDatabase("gogs-db.sql"); err != nil {
+		log.Fatalf("Fail to dump database: %v", err)
+	}
+
+	log.Printf("Packing dump files...")
 	z, err := zip.Create("gogs-dump.zip")
 	if err != nil {
 		os.Remove("gogs-dump.zip")
@@ -44,9 +52,13 @@ func runDump(*cli.Context) {
 
 	execDir, _ := base.ExecDir()
 	z.AddFile("gogs-repo.zip", path.Join(execDir, "gogs-repo.zip"))
+	z.AddFile("gogs-db.sql", path.Join(execDir, "gogs-db.sql"))
 	z.AddFile("custom/conf/app.ini", path.Join(execDir, "custom/conf/app.ini"))
 	z.AddDir("log", path.Join(execDir, "log"))
-	z.Close()
+	if err = z.Close(); err != nil {
+		os.Remove("gogs-dump.zip")
+		log.Fatalf("Fail to save gogs-dump.zip: %v", err)
+	}
 
 	log.Println("Finish dumping!")
 }

+ 5 - 6
cmd/fix.go

@@ -14,12 +14,11 @@ import (
 )
 
 var CmdFix = cli.Command{
-	Name:  "fix",
-	Usage: "This command for upgrade from old version",
-	Description: `
-gogs fix provide upgrade from old version`,
-	Action: runFix,
-	Flags:  []cli.Flag{},
+	Name:        "fix",
+	Usage:       "This command for upgrade from old version",
+	Description: `Fix provide upgrade from old version`,
+	Action:      runFix,
+	Flags:       []cli.Flag{},
 }
 
 func runFix(k *cli.Context) {

+ 5 - 6
cmd/serve.go

@@ -35,12 +35,11 @@ var (
 )
 
 var CmdServ = cli.Command{
-	Name:  "serv",
-	Usage: "This command should only be called by SSH shell",
-	Description: `
-Serv provide access auth for repositories`,
-	Action: runServ,
-	Flags:  []cli.Flag{},
+	Name:        "serv",
+	Usage:       "This command should only be called by SSH shell",
+	Description: `Serv provide access auth for repositories`,
+	Action:      runServ,
+	Flags:       []cli.Flag{},
 }
 
 func newLogger(execDir string) {

+ 5 - 6
cmd/update.go

@@ -17,12 +17,11 @@ import (
 )
 
 var CmdUpdate = cli.Command{
-	Name:  "update",
-	Usage: "This command should only be called by SSH shell",
-	Description: `
-Update get pushed info and insert into database`,
-	Action: runUpdate,
-	Flags:  []cli.Flag{},
+	Name:        "update",
+	Usage:       "This command should only be called by SSH shell",
+	Description: `Update get pushed info and insert into database`,
+	Action:      runUpdate,
+	Flags:       []cli.Flag{},
 }
 
 func newUpdateLogger(execDir string) {

+ 2 - 3
cmd/web.go

@@ -30,8 +30,7 @@ import (
 var CmdWeb = cli.Command{
 	Name:  "web",
 	Usage: "Start Gogs web server",
-	Description: `
-Gogs web server is the only thing you need to run, 
+	Description: `Gogs web server is the only thing you need to run, 
 and it takes care of all the other things for you`,
 	Action: runWeb,
 	Flags:  []cli.Flag{},
@@ -153,7 +152,7 @@ func runWeb(*cli.Context) {
 		r.Get("/settings/collaboration", repo.Collaboration)
 		r.Post("/settings/collaboration", repo.CollaborationPost)
 		r.Get("/settings/hooks", repo.WebHooks)
-		r.Get("/settings/hooks/add",repo.WebHooksAdd)
+		r.Get("/settings/hooks/add", repo.WebHooksAdd)
 		r.Get("/action/:action", repo.Action)
 		r.Get("/issues/new", repo.CreateIssue)
 		r.Post("/issues/new", bindIgnErr(auth.CreateIssueForm{}), repo.CreateIssuePost)

+ 5 - 0
models/models.go

@@ -160,3 +160,8 @@ func GetStatistic() (stats Statistic) {
 	stats.Counter.Release, _ = orm.Count(new(Release))
 	return
 }
+
+// DumpDatabase dumps all data from database to file system.
+func DumpDatabase(filePath string) error {
+	return orm.DumpAllToFile(filePath)
+}

+ 3 - 1
modules/base/tool.go

@@ -140,7 +140,9 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
 
 // AvatarLink returns avatar link by given e-mail.
 func AvatarLink(email string) string {
-	if Service.EnableCacheAvatar {
+	if DisableGravatar {
+		return "/img/avatar_default.jpg"
+	} else if Service.EnableCacheAvatar {
 		return "/avatar/" + EncodeMd5(email)
 	}
 	return "//1.gravatar.com/avatar/" + EncodeMd5(email)