@@ -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!") | |||
} |
@@ -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) { |
@@ -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) { |
@@ -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) { |
@@ -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) |
@@ -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) | |||
} |
@@ -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) |