Upgrade required git version to 2.0 (#19577)

* Upgrade required git version to 2.0

* update document
This commit is contained in:
wxiaoguang 2022-05-02 20:30:24 +08:00 committed by GitHub
parent 0ba3ada866
commit 509d811243
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 7 deletions

View file

@ -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
``` ```

View file

@ -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