Skip to content

Commit

Permalink
Upgrade required git version to 2.0 (#19577)
Browse files Browse the repository at this point in the history
* Upgrade required git version to 2.0

* update document
  • Loading branch information
wxiaoguang committed May 2, 2022
1 parent 0ba3ada commit 509d811
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
3 changes: 2 additions & 1 deletion docs/content/doc/installation/from-binary.en-us.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
Expand Down
22 changes: 16 additions & 6 deletions modules/git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package git
import (
"context"
"fmt"
"os"
"os/exec"
"runtime"
"strings"
Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand All @@ -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
Expand Down

0 comments on commit 509d811

Please sign in to comment.