2019-03-16 06:12:44 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package setting
import (
"time"
2019-03-27 12:33:00 +03:00
"code.gitea.io/gitea/modules/git"
2019-03-16 06:12:44 +03:00
"code.gitea.io/gitea/modules/log"
)
var (
// Git settings
Git = struct {
2019-07-07 10:26:56 +03:00
Path string
2019-05-26 12:50:06 +03:00
DisableDiffHighlight bool
MaxGitDiffLines int
MaxGitDiffLineCharacters int
MaxGitDiffFiles int
2021-01-19 07:07:38 +03:00
CommitsRangeSize int
BranchesRangeSize int
2020-01-12 11:46:03 +03:00
VerbosePush bool
VerbosePushDelay time . Duration
2019-06-08 14:47:46 +03:00
GCArgs [ ] string ` ini:"GC_ARGS" delim:" " `
2019-05-26 12:50:06 +03:00
EnableAutoGitWireProtocol bool
2020-03-08 16:34:38 +03:00
PullRequestPushMessage bool
2019-05-26 12:50:06 +03:00
Timeout struct {
2019-03-16 06:12:44 +03:00
Default int
Migrate int
Mirror int
Clone int
Pull int
GC int ` ini:"GC" `
} ` ini:"git.timeout" `
} {
2019-05-26 12:50:06 +03:00
DisableDiffHighlight : false ,
MaxGitDiffLines : 1000 ,
MaxGitDiffLineCharacters : 5000 ,
MaxGitDiffFiles : 100 ,
2021-01-19 07:07:38 +03:00
CommitsRangeSize : 50 ,
BranchesRangeSize : 20 ,
2020-01-12 11:46:03 +03:00
VerbosePush : true ,
VerbosePushDelay : 5 * time . Second ,
2019-05-26 12:50:06 +03:00
GCArgs : [ ] string { } ,
EnableAutoGitWireProtocol : true ,
2020-03-08 16:34:38 +03:00
PullRequestPushMessage : true ,
2019-03-16 06:12:44 +03:00
Timeout : struct {
Default int
Migrate int
Mirror int
Clone int
Pull int
GC int ` ini:"GC" `
} {
Default : int ( git . DefaultCommandExecutionTimeout / time . Second ) ,
Migrate : 600 ,
Mirror : 300 ,
Clone : 300 ,
Pull : 300 ,
GC : 60 ,
} ,
}
)
func newGit ( ) {
if err := Cfg . Section ( "git" ) . MapTo ( & Git ) ; err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Failed to map Git settings: %v" , err )
2019-03-16 06:12:44 +03:00
}
2019-07-07 10:26:56 +03:00
if err := git . SetExecutablePath ( Git . Path ) ; err != nil {
2020-10-08 18:50:17 +03:00
log . Fatal ( "Failed to initialize Git settings: %v" , err )
2019-07-07 10:26:56 +03:00
}
2019-03-16 06:12:44 +03:00
git . DefaultCommandExecutionTimeout = time . Duration ( Git . Timeout . Default ) * time . Second
2020-09-05 19:42:58 +03:00
version , err := git . LocalVersion ( )
2019-03-16 06:12:44 +03:00
if err != nil {
2019-04-02 10:48:31 +03:00
log . Fatal ( "Error retrieving git version: %v" , err )
2019-03-16 06:12:44 +03:00
}
2020-11-03 14:35:09 +03:00
// force cleanup args
git . GlobalCommandArgs = [ ] string { }
2020-10-21 18:42:08 +03:00
if git . CheckGitVersionAtLeast ( "2.9" ) == nil {
2019-03-16 06:12:44 +03:00
// Explicitly disable credential helper, otherwise Git credentials might leak
git . GlobalCommandArgs = append ( git . GlobalCommandArgs , "-c" , "credential.helper=" )
}
2019-05-26 12:50:06 +03:00
var format = "Git Version: %s"
2020-09-05 19:42:58 +03:00
var args = [ ] interface { } { version . Original ( ) }
2019-05-26 12:50:06 +03:00
// Since git wire protocol has been released from git v2.18
2020-10-21 18:42:08 +03:00
if Git . EnableAutoGitWireProtocol && git . CheckGitVersionAtLeast ( "2.18" ) == nil {
2019-05-26 12:50:06 +03:00
git . GlobalCommandArgs = append ( git . GlobalCommandArgs , "-c" , "protocol.version=2" )
format += ", Wire Protocol %s Enabled"
args = append ( args , "Version 2" ) // for focus color
}
2021-01-19 07:07:38 +03:00
git . CommitsRangeSize = Git . CommitsRangeSize
git . BranchesRangeSize = Git . BranchesRangeSize
2019-05-26 12:50:06 +03:00
log . Info ( format , args ... )
2019-03-16 06:12:44 +03:00
}