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
|
### 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
|
```sh
|
||||||
git --version
|
git --version
|
||||||
```
|
```
|
||||||
|
|
|
@ -8,6 +8,7 @@ package git
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -20,10 +21,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// Prefix the log prefix
|
|
||||||
Prefix = "[git-module] "
|
|
||||||
// GitVersionRequired is the minimum Git version required
|
// 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
|
// GitExecutable is the command name of git
|
||||||
// Could be updated to an absolute path while initialization
|
// Could be updated to an absolute path while initialization
|
||||||
|
@ -87,13 +89,13 @@ func SetExecutablePath(path string) error {
|
||||||
}
|
}
|
||||||
absPath, err := exec.LookPath(GitExecutable)
|
absPath, err := exec.LookPath(GitExecutable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Git not found: %v", err)
|
return fmt.Errorf("git not found: %w", err)
|
||||||
}
|
}
|
||||||
GitExecutable = absPath
|
GitExecutable = absPath
|
||||||
|
|
||||||
err = LoadGitVersion()
|
err = LoadGitVersion()
|
||||||
if err != nil {
|
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)
|
versionRequired, err := version.NewVersion(GitVersionRequired)
|
||||||
|
@ -102,7 +104,15 @@ func SetExecutablePath(path string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if gitVersion.LessThan(versionRequired) {
|
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
|
return nil
|
||||||
|
|
Reference in a new issue