123 lines · 3.3 KB · Go
RawDownload
// Copyright 2019 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package setting import (	"path/filepath"	"strings"	"time" 	"forgejo.org/modules/log") // Git settingsvar Git = struct {	Path                 string	HomePath             string	DisableDiffHighlight bool 	MaxGitDiffLines           int	MaxGitDiffLineCharacters  int	MaxGitDiffFiles           int	CommitsRangeSize          int // CommitsRangeSize the default commits range size	BranchesRangeSize         int // BranchesRangeSize the default branches range size	VerbosePush               bool	VerbosePushDelay          time.Duration	GCArgs                    []string `ini:"GC_ARGS" delim:" "`	EnableAutoGitWireProtocol bool	PullRequestPushMessage    bool	LargeObjectThreshold      int64	DisableCoreProtectNTFS    bool	DisablePartialClone       bool	Timeout                   struct {		Default int		Migrate int		Mirror  int		Clone   int		Pull    int		GC      int `ini:"GC"`		Grep    int	} `ini:"git.timeout"`}{	DisableDiffHighlight:      false,	MaxGitDiffLines:           1000,	MaxGitDiffLineCharacters:  5000,	MaxGitDiffFiles:           100,	CommitsRangeSize:          50,	BranchesRangeSize:         20,	VerbosePush:               true,	VerbosePushDelay:          5 * time.Second,	GCArgs:                    []string{},	EnableAutoGitWireProtocol: true,	PullRequestPushMessage:    true,	LargeObjectThreshold:      1024 * 1024,	DisablePartialClone:       false,	Timeout: struct {		Default int		Migrate int		Mirror  int		Clone   int		Pull    int		GC      int `ini:"GC"`		Grep    int	}{		Default: 360,		Migrate: 600,		Mirror:  300,		Clone:   300,		Pull:    300,		GC:      60,		Grep:    2,	},} type GitConfigType struct {	Options map[string]string // git config key is case-insensitive, always use lower-case} func (c *GitConfigType) SetOption(key, val string) {	c.Options[strings.ToLower(key)] = val} func (c *GitConfigType) GetOption(key string) string {	return c.Options[strings.ToLower(key)]} var GitConfig = GitConfigType{	Options: make(map[string]string),} func loadGitFrom(rootCfg ConfigProvider) {	sec := rootCfg.Section("git")	if err := sec.MapTo(&Git); err != nil {		log.Fatal("Failed to map Git settings: %v", err)	} 	secGitConfig := rootCfg.Section("git.config")	GitConfig.Options = make(map[string]string)	GitConfig.SetOption("diff.algorithm", "histogram")	GitConfig.SetOption("core.logAllRefUpdates", "true")	GitConfig.SetOption("gc.reflogExpire", "90") 	secGitReflog := rootCfg.Section("git.reflog")	if secGitReflog.HasKey("ENABLED") {		deprecatedSetting(rootCfg, "git.reflog", "ENABLED", "git.config", "core.logAllRefUpdates", "1.21")		GitConfig.SetOption("core.logAllRefUpdates", secGitReflog.Key("ENABLED").In("true", []string{"true", "false"}))	}	if secGitReflog.HasKey("EXPIRATION") {		deprecatedSetting(rootCfg, "git.reflog", "EXPIRATION", "git.config", "core.reflogExpire", "1.21")		GitConfig.SetOption("gc.reflogExpire", secGitReflog.Key("EXPIRATION").String())	} 	for _, key := range secGitConfig.Keys() {		GitConfig.SetOption(key.Name(), key.String())	} 	Git.HomePath = sec.Key("HOME_PATH").MustString("home")	if !filepath.IsAbs(Git.HomePath) {		Git.HomePath = filepath.Join(AppDataPath, Git.HomePath)	} else {		Git.HomePath = filepath.Clean(Git.HomePath)	}}