mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 01:34:27 +00: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