when git version >= 2.18, git command could run with git wire protocol version 2 param if enabled (#7047)
This commit is contained in:
parent
6c16febe4d
commit
063fa99159
4 changed files with 28 additions and 13 deletions
|
@ -671,6 +671,8 @@ MAX_GIT_DIFF_FILES = 100
|
|||
; Arguments for command 'git gc', e.g. "--aggressive --auto"
|
||||
; see more on http://git-scm.com/docs/git-gc/
|
||||
GC_ARGS =
|
||||
; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1
|
||||
EnableAutoGitWireProtocol = true
|
||||
|
||||
; Operation timeout in seconds
|
||||
[git.timeout]
|
||||
|
|
|
@ -396,6 +396,7 @@ NB: You must `REDIRECT_MACARON_LOG` and have `DISABLE_ROUTER_LOG` set to `false`
|
|||
- `MAX_GIT_DIFF_LINE_CHARACTERS`: **5000**: Max character count per line highlighted in diff view.
|
||||
- `MAX_GIT_DIFF_FILES`: **100**: Max number of files shown in diff view.
|
||||
- `GC_ARGS`: **\<empty\>**: Arguments for command `git gc`, e.g. `--aggressive --auto`. See more on http://git-scm.com/docs/git-gc/
|
||||
- `ENABLE_AUTO_GIT_WIRE_PROTOCOL`: **true**: If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1
|
||||
|
||||
## Git - Timeout settings (`git.timeout`)
|
||||
- `DEFAUlT`: **360**: Git operations default timeout seconds.
|
||||
|
|
|
@ -210,6 +210,7 @@ menu:
|
|||
- `CLONE`: **300**: 内部仓库间克隆的超时时间,单位秒
|
||||
- `PULL`: **300**: 内部仓库间拉取的超时时间,单位秒
|
||||
- `GC`: **60**: git仓库GC的超时时间,单位秒
|
||||
- `ENABLE_AUTO_GIT_WIRE_PROTOCOL`: **true**: 是否根据 Git Wire Protocol协议支持情况自动切换版本,当 git 版本在 2.18 及以上时会自动切换到版本2。为 `false` 则不切换。
|
||||
|
||||
## API (`api`)
|
||||
|
||||
|
|
|
@ -16,12 +16,13 @@ import (
|
|||
var (
|
||||
// Git settings
|
||||
Git = struct {
|
||||
DisableDiffHighlight bool
|
||||
MaxGitDiffLines int
|
||||
MaxGitDiffLineCharacters int
|
||||
MaxGitDiffFiles int
|
||||
GCArgs []string `delim:" "`
|
||||
Timeout struct {
|
||||
DisableDiffHighlight bool
|
||||
MaxGitDiffLines int
|
||||
MaxGitDiffLineCharacters int
|
||||
MaxGitDiffFiles int
|
||||
GCArgs []string `delim:" "`
|
||||
EnableAutoGitWireProtocol bool
|
||||
Timeout struct {
|
||||
Default int
|
||||
Migrate int
|
||||
Mirror int
|
||||
|
@ -30,11 +31,12 @@ var (
|
|||
GC int `ini:"GC"`
|
||||
} `ini:"git.timeout"`
|
||||
}{
|
||||
DisableDiffHighlight: false,
|
||||
MaxGitDiffLines: 1000,
|
||||
MaxGitDiffLineCharacters: 5000,
|
||||
MaxGitDiffFiles: 100,
|
||||
GCArgs: []string{},
|
||||
DisableDiffHighlight: false,
|
||||
MaxGitDiffLines: 1000,
|
||||
MaxGitDiffLineCharacters: 5000,
|
||||
MaxGitDiffFiles: 100,
|
||||
GCArgs: []string{},
|
||||
EnableAutoGitWireProtocol: true,
|
||||
Timeout: struct {
|
||||
Default int
|
||||
Migrate int
|
||||
|
@ -64,10 +66,19 @@ func newGit() {
|
|||
log.Fatal("Error retrieving git version: %v", err)
|
||||
}
|
||||
|
||||
log.Info("Git Version: %s", binVersion)
|
||||
|
||||
if version.Compare(binVersion, "2.9", ">=") {
|
||||
// Explicitly disable credential helper, otherwise Git credentials might leak
|
||||
git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=")
|
||||
}
|
||||
|
||||
var format = "Git Version: %s"
|
||||
var args = []interface{}{binVersion}
|
||||
// Since git wire protocol has been released from git v2.18
|
||||
if Git.EnableAutoGitWireProtocol && version.Compare(binVersion, "2.18", ">=") {
|
||||
git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "protocol.version=2")
|
||||
format += ", Wire Protocol %s Enabled"
|
||||
args = append(args, "Version 2") // for focus color
|
||||
}
|
||||
|
||||
log.Info(format, args...)
|
||||
}
|
||||
|
|
Reference in a new issue