From a641854cad6dddda551a2995c765e970f7cea8ba Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 5 May 2014 00:55:17 -0400 Subject: [PATCH] command dump --- cmd/dump.go | 24 ++++++++++++++++++------ cmd/fix.go | 11 +++++------ cmd/serve.go | 11 +++++------ cmd/update.go | 11 +++++------ cmd/web.go | 5 ++--- models/models.go | 5 +++++ modules/base/tool.go | 4 +++- 7 files changed, 43 insertions(+), 28 deletions(-) diff --git a/cmd/dump.go b/cmd/dump.go index c385d586f..035f7828b 100644 --- a/cmd/dump.go +++ b/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!") } diff --git a/cmd/fix.go b/cmd/fix.go index 47134cd14..809c00396 100644 --- a/cmd/fix.go +++ b/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) { diff --git a/cmd/serve.go b/cmd/serve.go index 11cf97ad6..e881717c3 100644 --- a/cmd/serve.go +++ b/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) { diff --git a/cmd/update.go b/cmd/update.go index d7efe87f3..1ab08ca19 100644 --- a/cmd/update.go +++ b/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) { diff --git a/cmd/web.go b/cmd/web.go index 1e6050183..87ad908aa 100644 --- a/cmd/web.go +++ b/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) diff --git a/models/models.go b/models/models.go index 059435f15..09b530ced 100644 --- a/models/models.go +++ b/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) +} diff --git a/modules/base/tool.go b/modules/base/tool.go index 9b165b979..812d7634b 100644 --- a/modules/base/tool.go +++ b/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)