2019-03-16 04:12:44 +01:00
|
|
|
// Copyright 2019 The Gitea Authors. All rights reserved.
|
2022-11-27 19:20:29 +01:00
|
|
|
// SPDX-License-Identifier: MIT
|
2019-03-16 04:12:44 +01:00
|
|
|
|
|
|
|
package setting
|
|
|
|
|
|
|
|
import (
|
2022-07-08 10:09:07 +02:00
|
|
|
"path/filepath"
|
2023-05-23 18:30:19 +02:00
|
|
|
"strings"
|
2019-03-16 04:12:44 +01:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"code.gitea.io/gitea/modules/log"
|
|
|
|
)
|
|
|
|
|
2022-01-20 18:46:10 +01:00
|
|
|
// Git settings
|
|
|
|
var Git = struct {
|
2023-03-13 08:51:07 +01:00
|
|
|
Path string
|
|
|
|
HomePath string
|
|
|
|
DisableDiffHighlight bool
|
|
|
|
Reflog struct {
|
|
|
|
Enabled bool
|
|
|
|
Expiration int
|
|
|
|
} `ini:"git.reflog"`
|
2022-01-20 18:46:10 +01:00
|
|
|
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"`
|
|
|
|
} `ini:"git.timeout"`
|
|
|
|
}{
|
2023-03-13 08:51:07 +01:00
|
|
|
Reflog: struct {
|
|
|
|
Enabled bool
|
|
|
|
Expiration int
|
|
|
|
}{
|
|
|
|
Enabled: true,
|
|
|
|
Expiration: 90,
|
|
|
|
},
|
2022-01-20 18:46:10 +01:00
|
|
|
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"`
|
2019-03-16 04:12:44 +01:00
|
|
|
}{
|
2022-01-20 18:46:10 +01:00
|
|
|
Default: 360,
|
|
|
|
Migrate: 600,
|
|
|
|
Mirror: 300,
|
|
|
|
Clone: 300,
|
|
|
|
Pull: 300,
|
|
|
|
GC: 60,
|
|
|
|
},
|
|
|
|
}
|
2019-03-16 04:12:44 +01:00
|
|
|
|
2023-05-23 18:30:19 +02:00
|
|
|
var GitConfig = struct {
|
|
|
|
Options map[string]string
|
|
|
|
}{
|
|
|
|
Options: make(map[string]string),
|
|
|
|
}
|
|
|
|
|
2023-02-19 17:12:01 +01:00
|
|
|
func loadGitFrom(rootCfg ConfigProvider) {
|
|
|
|
sec := rootCfg.Section("git")
|
2022-07-08 10:09:07 +02:00
|
|
|
if err := sec.MapTo(&Git); err != nil {
|
2019-04-02 09:48:31 +02:00
|
|
|
log.Fatal("Failed to map Git settings: %v", err)
|
2019-03-16 04:12:44 +01:00
|
|
|
}
|
2022-07-08 10:09:07 +02:00
|
|
|
|
2023-05-23 18:30:19 +02:00
|
|
|
secGitConfig := rootCfg.Section("git.config")
|
|
|
|
GitConfig.Options = make(map[string]string)
|
|
|
|
for _, key := range secGitConfig.Keys() {
|
|
|
|
// git config key is case-insensitive, so always use lower-case
|
|
|
|
GitConfig.Options[strings.ToLower(key.Name())] = key.String()
|
|
|
|
}
|
|
|
|
if _, ok := GitConfig.Options["diff.algorithm"]; !ok {
|
|
|
|
GitConfig.Options["diff.algorithm"] = "histogram"
|
|
|
|
}
|
|
|
|
|
2022-07-08 10:09:07 +02:00
|
|
|
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)
|
|
|
|
}
|
2019-03-16 04:12:44 +01:00
|
|
|
}
|