summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/web.go2
-rw-r--r--conf/app.ini14
-rw-r--r--models/repo.go4
-rw-r--r--modules/cron/manager.go4
-rw-r--r--modules/setting/setting.go20
-rw-r--r--routers/repo/commit.go4
6 files changed, 32 insertions, 16 deletions
diff --git a/cmd/web.go b/cmd/web.go
index 51f146f374..3c25b9df22 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -25,6 +25,7 @@ import (
"github.com/macaron-contrib/oauth2"
"github.com/macaron-contrib/session"
"github.com/macaron-contrib/toolbox"
+ "gopkg.in/ini.v1"
api "github.com/gogits/go-gogs-client"
@@ -79,6 +80,7 @@ func checkVersion() {
{"github.com/macaron-contrib/csrf", csrf.Version, "0.0.1"},
{"github.com/macaron-contrib/i18n", i18n.Version, "0.0.5"},
{"github.com/macaron-contrib/session", session.Version, "0.1.1"},
+ {"gopkg.in/ini.v1", ini.Version, "1.0.1"},
}
for _, c := range checkers {
ver := strings.Join(strings.Split(c.Version(), ".")[:3], ".")
diff --git a/conf/app.ini b/conf/app.ini
index 467b430365..c191d105cd 100644
--- a/conf/app.ini
+++ b/conf/app.ini
@@ -260,14 +260,20 @@ DRIVER =
CONN =
[git]
-MAX_GITDIFF_LINES = 10000
-; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
-; see more on http://git-scm.com/docs/git-fsck/1.7.5
-FSCK_ARGS =
+MAX_GIT_DIFF_LINES = 10000
; Arguments for command 'git gc', e.g.: "--aggressive --auto"
; see more on http://git-scm.com/docs/git-gc/1.7.5
GC_ARGS =
+; Git health check.
+[git.fsck]
+ENABLE = true
+; Execution interval in hours. Default is 24.
+INTERVAL = 24
+; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
+; see more on http://git-scm.com/docs/git-fsck/1.7.5
+ARGS =
+
[i18n]
LANGS = en-US,zh-CN,zh-HK,de-DE,fr-CA,nl-NL,lv-LV
NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu
diff --git a/models/repo.go b/models/repo.go
index 77c4b140db..65689b6a1e 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -1228,7 +1228,7 @@ func GitFsck() {
isGitFscking = true
defer func() { isGitFscking = false }()
- args := append([]string{"fsck"}, setting.GitFsckArgs...)
+ args := append([]string{"fsck"}, setting.Git.Fsck.Args...)
if err := x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)
@@ -1252,7 +1252,7 @@ func GitFsck() {
}
func GitGcRepos() error {
- args := append([]string{"gc"}, setting.GitGcArgs...)
+ args := append([]string{"gc"}, setting.Git.GcArgs...)
return x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)
diff --git a/modules/cron/manager.go b/modules/cron/manager.go
index 49b1a99cee..135fec4faa 100644
--- a/modules/cron/manager.go
+++ b/modules/cron/manager.go
@@ -16,7 +16,9 @@ var c = New()
func NewCronContext() {
c.AddFunc("Update mirrors", "@every 1h", models.MirrorUpdate)
c.AddFunc("Deliver hooks", fmt.Sprintf("@every %dm", setting.WebhookTaskInterval), models.DeliverHooks)
- c.AddFunc("Repository health check", "@every 1h", models.GitFsck)
+ if setting.Git.Fsck.Enable {
+ c.AddFunc("Repository health check", fmt.Sprintf("@every %dh", setting.Git.Fsck.Interval), models.GitFsck)
+ }
c.Start()
}
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index c4d3d3a6c2..bc9da3c63a 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -107,9 +107,15 @@ var (
SessionConfig session.Options
// Git settings.
- MaxGitDiffLines int
- GitFsckArgs []string
- GitGcArgs []string
+ Git struct {
+ MaxGitDiffLines int
+ GcArgs []string `delim:" "`
+ Fsck struct {
+ Enable bool
+ Interval int
+ Args []string `delim:" "`
+ } `ini:"git.fsck"`
+ }
// I18n settings.
Langs, Names []string
@@ -174,6 +180,7 @@ func NewConfigContext() {
} else {
log.Warn("No custom 'conf/app.ini' found, please go to '/install'")
}
+ Cfg.NameMapper = ini.AllCapsUnderscore
LogRootPath = Cfg.Section("log").Key("ROOT_PATH").MustString(path.Join(workDir, "log"))
@@ -291,10 +298,9 @@ func NewConfigContext() {
}
DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool()
- sec = Cfg.Section("git")
- MaxGitDiffLines = sec.Key("MAX_GITDIFF_LINES").MustInt(10000)
- GitFsckArgs = sec.Key("FSCK_ARGS").Strings(" ")
- GitGcArgs = sec.Key("GC_ARGS").Strings(" ")
+ if err = Cfg.Section("git").MapTo(&Git); err != nil {
+ log.Fatal(4, "Fail to map Git settings: %v", err)
+ }
Langs = Cfg.Section("i18n").Key("LANGS").Strings(",")
Names = Cfg.Section("i18n").Key("NAMES").Strings(",")
diff --git a/routers/repo/commit.go b/routers/repo/commit.go
index 619c6c815c..4571b24f2a 100644
--- a/routers/repo/commit.go
+++ b/routers/repo/commit.go
@@ -208,7 +208,7 @@ func Diff(ctx *middleware.Context) {
commit := ctx.Repo.Commit
commit.CommitMessage = string(base.RenderIssueIndexPattern([]byte(commit.CommitMessage), ctx.Repo.RepoLink))
diff, err := models.GetDiffCommit(models.RepoPath(userName, repoName),
- commitId, setting.MaxGitDiffLines)
+ commitId, setting.Git.MaxGitDiffLines)
if err != nil {
ctx.Handle(404, "GetDiffCommit", err)
return
@@ -272,7 +272,7 @@ func CompareDiff(ctx *middleware.Context) {
}
diff, err := models.GetDiffRange(models.RepoPath(userName, repoName), beforeCommitId,
- afterCommitId, setting.MaxGitDiffLines)
+ afterCommitId, setting.Git.MaxGitDiffLines)
if err != nil {
ctx.Handle(404, "GetDiffRange", err)
return