mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-27 00:23:41 +09:00 
			
		
		
		
	Upgrade required git version to 2.0 (#19577)
* Upgrade required git version to 2.0 * update document
This commit is contained in:
		| @@ -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 New Issue
	
	Block a user