Upgrade required git version to 2.0 (#19577)
* Upgrade required git version to 2.0 * update document
This commit is contained in:
parent
0ba3ada866
commit
509d811243
2 changed files with 18 additions and 7 deletions
|
@ -50,7 +50,8 @@ Of note, configuring `GITEA_WORK_DIR` will tell Gitea where to base its working
|
|||
|
||||
### Prepare environment
|
||||
|
||||
Check that Git is installed on the server. If it is not, install it first.
|
||||
Check that Git is installed on the server. If it is not, install it first. Gitea requires Git version >= 2.0.
|
||||
|
||||
```sh
|
||||
git --version
|
||||
```
|
||||
|
|
|
@ -8,6 +8,7 @@ package git
|
|||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
@ -20,10 +21,11 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
// Prefix the log prefix
|
||||
Prefix = "[git-module] "
|
||||
// GitVersionRequired is the minimum Git version required
|
||||
GitVersionRequired = "1.7.2"
|
||||
// At the moment, all code for git 1.x are not changed, if some users want to test with old git client
|
||||
// or bypass the check, they still have a chance to edit this variable manually.
|
||||
// If everything works fine, the code for git 1.x could be removed in a separate PR before 1.17 frozen.
|
||||
GitVersionRequired = "2.0.0"
|
||||
|
||||
// GitExecutable is the command name of git
|
||||
// Could be updated to an absolute path while initialization
|
||||
|
@ -87,13 +89,13 @@ func SetExecutablePath(path string) error {
|
|||
}
|
||||
absPath, err := exec.LookPath(GitExecutable)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Git not found: %v", err)
|
||||
return fmt.Errorf("git not found: %w", err)
|
||||
}
|
||||
GitExecutable = absPath
|
||||
|
||||
err = LoadGitVersion()
|
||||
if err != nil {
|
||||
return fmt.Errorf("Git version missing: %v", err)
|
||||
return fmt.Errorf("unable to load git version: %w", err)
|
||||
}
|
||||
|
||||
versionRequired, err := version.NewVersion(GitVersionRequired)
|
||||
|
@ -102,7 +104,15 @@ func SetExecutablePath(path string) error {
|
|||
}
|
||||
|
||||
if gitVersion.LessThan(versionRequired) {
|
||||
return fmt.Errorf("Git version not supported. Requires version > %v", GitVersionRequired)
|
||||
moreHint := "get git: https://git-scm.com/download/"
|
||||
if runtime.GOOS == "linux" {
|
||||
// there are a lot of CentOS/RHEL users using old git, so we add a special hint for them
|
||||
if _, err = os.Stat("/etc/redhat-release"); err == nil {
|
||||
// ius.io is the recommended official(git-scm.com) method to install git
|
||||
moreHint = "get git: https://git-scm.com/download/linux and https://ius.io"
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("installed git version %q is not supported, Gitea requires git version >= %q, %s", gitVersion.Original(), GitVersionRequired, moreHint)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
Reference in a new issue