@@ -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], ".") |
@@ -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 |
@@ -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) |
@@ -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() | |||
} | |||
@@ -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(",") |
@@ -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 |