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 | ### 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 New Issue
	
	Block a user