Let package git depend on setting but not opposite (#15241)
* Let package git depend on setting but not opposite * private some package variables
This commit is contained in:
		
							parent
							
								
									e673e42f7e
								
							
						
					
					
						commit
						e3c626834b
					
				
					 17 changed files with 113 additions and 92 deletions
				
			
		| 
						 | 
				
			
			@ -26,6 +26,7 @@ import (
 | 
			
		|||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	gitea_git "code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup/external"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +80,7 @@ func runPR() {
 | 
			
		|||
	setting.RunUser = curUser.Username
 | 
			
		||||
 | 
			
		||||
	log.Printf("[PR] Loading fixtures data ...\n")
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	gitea_git.CheckLFSVersion()
 | 
			
		||||
	//models.LoadConfigs()
 | 
			
		||||
	/*
 | 
			
		||||
		setting.Database.Type = "sqlite3"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,7 +143,7 @@ func standardCommitAndPushTest(t *testing.T, dstPath string) (little, big string
 | 
			
		|||
func lfsCommitAndPushTest(t *testing.T, dstPath string) (littleLFS, bigLFS string) {
 | 
			
		||||
	t.Run("LFS", func(t *testing.T) {
 | 
			
		||||
		defer PrintCurrentTest(t)()
 | 
			
		||||
		setting.CheckLFSVersion()
 | 
			
		||||
		git.CheckLFSVersion()
 | 
			
		||||
		if !setting.LFS.StartServer {
 | 
			
		||||
			t.Skip()
 | 
			
		||||
			return
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ func rawTest(t *testing.T, ctx *APITestContext, little, big, littleLFS, bigLFS s
 | 
			
		|||
		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK)
 | 
			
		||||
		assert.Equal(t, littleSize, resp.Length)
 | 
			
		||||
 | 
			
		||||
		setting.CheckLFSVersion()
 | 
			
		||||
		git.CheckLFSVersion()
 | 
			
		||||
		if setting.LFS.StartServer {
 | 
			
		||||
			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/raw/branch/master/", littleLFS))
 | 
			
		||||
			resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ func mediaTest(t *testing.T, ctx *APITestContext, little, big, littleLFS, bigLFS
 | 
			
		|||
		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK)
 | 
			
		||||
		assert.Equal(t, littleSize, resp.Length)
 | 
			
		||||
 | 
			
		||||
		setting.CheckLFSVersion()
 | 
			
		||||
		git.CheckLFSVersion()
 | 
			
		||||
		if setting.LFS.StartServer {
 | 
			
		||||
			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/media/branch/master/", littleLFS))
 | 
			
		||||
			resp = session.MakeRequestNilResponseRecorder(t, req, http.StatusOK)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@ import (
 | 
			
		|||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/graceful"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/queue"
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +163,7 @@ func initIntegrationTest() {
 | 
			
		|||
	setting.SetCustomPathAndConf("", "", "")
 | 
			
		||||
	setting.NewContext()
 | 
			
		||||
	util.RemoveAll(models.LocalCopyPath())
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	setting.InitDBConfig()
 | 
			
		||||
	if err := storage.Init(); err != nil {
 | 
			
		||||
		fmt.Printf("Init storage failed: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,7 @@ import (
 | 
			
		|||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/lfs"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web"
 | 
			
		||||
| 
						 | 
				
			
			@ -81,7 +82,7 @@ func checkResponseTestContentEncoding(t *testing.T, content *[]byte, resp *httpt
 | 
			
		|||
 | 
			
		||||
func TestGetLFSSmall(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +95,7 @@ func TestGetLFSSmall(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestGetLFSLarge(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +111,7 @@ func TestGetLFSLarge(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestGetLFSGzip(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +132,7 @@ func TestGetLFSGzip(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestGetLFSZip(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +155,7 @@ func TestGetLFSZip(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestGetLFSRangeNo(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +168,7 @@ func TestGetLFSRangeNo(t *testing.T) {
 | 
			
		|||
 | 
			
		||||
func TestGetLFSRange(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	if !setting.LFS.StartServer {
 | 
			
		||||
		t.Skip()
 | 
			
		||||
		return
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/models/migrations"
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/charset"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +62,7 @@ func initMigrationTest(t *testing.T) func() {
 | 
			
		|||
	assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
 | 
			
		||||
	assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath))
 | 
			
		||||
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	setting.InitDBConfig()
 | 
			
		||||
	setting.NewLogServices(true)
 | 
			
		||||
	return deferFn
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@ import (
 | 
			
		|||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +56,7 @@ func TestMain(m *testing.M) {
 | 
			
		|||
 | 
			
		||||
	setting.SetCustomPathAndConf("", "", "")
 | 
			
		||||
	setting.NewContext()
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	setting.InitDBConfig()
 | 
			
		||||
	setting.NewLogServices(true)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,8 +23,8 @@ var (
 | 
			
		|||
	// GlobalCommandArgs global command args for external package setting
 | 
			
		||||
	GlobalCommandArgs []string
 | 
			
		||||
 | 
			
		||||
	// DefaultCommandExecutionTimeout default command execution timeout duration
 | 
			
		||||
	DefaultCommandExecutionTimeout = 360 * time.Second
 | 
			
		||||
	// defaultCommandExecutionTimeout default command execution timeout duration
 | 
			
		||||
	defaultCommandExecutionTimeout = 360 * time.Second
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DefaultLocale is the default LC_ALL to run git commands in.
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ func (c *Command) RunInDirTimeoutEnvFullPipeline(env []string, timeout time.Dura
 | 
			
		|||
// it pipes stdout and stderr to given io.Writer and passes in an io.Reader as stdin. Between cmd.Start and cmd.Wait the passed in function is run.
 | 
			
		||||
func (c *Command) RunInDirTimeoutEnvFullPipelineFunc(env []string, timeout time.Duration, dir string, stdout, stderr io.Writer, stdin io.Reader, fn func(context.Context, context.CancelFunc) error) error {
 | 
			
		||||
	if timeout == -1 {
 | 
			
		||||
		timeout = DefaultCommandExecutionTimeout
 | 
			
		||||
		timeout = defaultCommandExecutionTimeout
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if len(dir) == 0 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ import (
 | 
			
		|||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/process"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
 | 
			
		||||
	"github.com/hashicorp/go-version"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -106,10 +107,42 @@ func SetExecutablePath(path string) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// VersionInfo returns git version information
 | 
			
		||||
func VersionInfo() string {
 | 
			
		||||
	var format = "Git Version: %s"
 | 
			
		||||
	var args = []interface{}{gitVersion.Original()}
 | 
			
		||||
	// Since git wire protocol has been released from git v2.18
 | 
			
		||||
	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil {
 | 
			
		||||
		format += ", Wire Protocol %s Enabled"
 | 
			
		||||
		args = append(args, "Version 2") // for focus color
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return fmt.Sprintf(format, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Init initializes git module
 | 
			
		||||
func Init(ctx context.Context) error {
 | 
			
		||||
	DefaultContext = ctx
 | 
			
		||||
 | 
			
		||||
	defaultCommandExecutionTimeout = time.Duration(setting.Git.Timeout.Default) * time.Second
 | 
			
		||||
 | 
			
		||||
	if err := SetExecutablePath(setting.Git.Path); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// force cleanup args
 | 
			
		||||
	GlobalCommandArgs = []string{}
 | 
			
		||||
 | 
			
		||||
	if CheckGitVersionAtLeast("2.9") == nil {
 | 
			
		||||
		// Explicitly disable credential helper, otherwise Git credentials might leak
 | 
			
		||||
		GlobalCommandArgs = append(GlobalCommandArgs, "-c", "credential.helper=")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Since git wire protocol has been released from git v2.18
 | 
			
		||||
	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil {
 | 
			
		||||
		GlobalCommandArgs = append(GlobalCommandArgs, "-c", "protocol.version=2")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Save current git version on init to gitVersion otherwise it would require an RWMutex
 | 
			
		||||
	if err := LoadGitVersion(); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										37
									
								
								modules/git/lfs.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								modules/git/lfs.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
// Copyright 2021 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package git
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	logger "code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var once sync.Once
 | 
			
		||||
 | 
			
		||||
// CheckLFSVersion will check lfs version, if not satisfied, then disable it.
 | 
			
		||||
func CheckLFSVersion() {
 | 
			
		||||
	if setting.LFS.StartServer {
 | 
			
		||||
		//Disable LFS client hooks if installed for the current OS user
 | 
			
		||||
		//Needs at least git v2.1.2
 | 
			
		||||
 | 
			
		||||
		err := LoadGitVersion()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logger.Fatal("Error retrieving git version: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if CheckGitVersionAtLeast("2.1.2") != nil {
 | 
			
		||||
			setting.LFS.StartServer = false
 | 
			
		||||
			logger.Error("LFS server support needs at least Git v2.1.2")
 | 
			
		||||
		} else {
 | 
			
		||||
			once.Do(func() {
 | 
			
		||||
				GlobalCommandArgs = append(GlobalCommandArgs, "-c", "filter.lfs.required=",
 | 
			
		||||
					"-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=")
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -12,6 +12,8 @@ import (
 | 
			
		|||
	"io/ioutil"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// GetBranchCommitID returns last commit ID string of given branch.
 | 
			
		||||
| 
						 | 
				
			
			@ -85,12 +87,6 @@ func (repo *Repository) GetCommitByPath(relpath string) (*Commit, error) {
 | 
			
		|||
	return commits.Front().Value.(*Commit), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CommitsRangeSize the default commits range size
 | 
			
		||||
var CommitsRangeSize = 50
 | 
			
		||||
 | 
			
		||||
// BranchesRangeSize the default branches range size
 | 
			
		||||
var BranchesRangeSize = 20
 | 
			
		||||
 | 
			
		||||
func (repo *Repository) commitsByRange(id SHA1, page, pageSize int) (*list.List, error) {
 | 
			
		||||
	stdout, err := NewCommand("log", id.String(), "--skip="+strconv.Itoa((page-1)*pageSize),
 | 
			
		||||
		"--max-count="+strconv.Itoa(pageSize), prettyLogFormat).RunInDirBytes(repo.Path)
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +202,7 @@ func (repo *Repository) FileCommitsCount(revision, file string) (int64, error) {
 | 
			
		|||
 | 
			
		||||
// CommitsByFileAndRange return the commits according revison file and the page
 | 
			
		||||
func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (*list.List, error) {
 | 
			
		||||
	skip := (page - 1) * CommitsRangeSize
 | 
			
		||||
	skip := (page - 1) * setting.Git.CommitsRangeSize
 | 
			
		||||
 | 
			
		||||
	stdoutReader, stdoutWriter := io.Pipe()
 | 
			
		||||
	defer func() {
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +212,7 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (
 | 
			
		|||
	go func() {
 | 
			
		||||
		stderr := strings.Builder{}
 | 
			
		||||
		err := NewCommand("log", revision, "--follow",
 | 
			
		||||
			"--max-count="+strconv.Itoa(CommitsRangeSize*page),
 | 
			
		||||
			"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize*page),
 | 
			
		||||
			prettyLogFormat, "--", file).
 | 
			
		||||
			RunInDirPipeline(repo.Path, stdoutWriter, &stderr)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -247,7 +243,7 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (
 | 
			
		|||
// CommitsByFileAndRangeNoFollow return the commits according revison file and the page
 | 
			
		||||
func (repo *Repository) CommitsByFileAndRangeNoFollow(revision, file string, page int) (*list.List, error) {
 | 
			
		||||
	stdout, err := NewCommand("log", revision, "--skip="+strconv.Itoa((page-1)*50),
 | 
			
		||||
		"--max-count="+strconv.Itoa(CommitsRangeSize), prettyLogFormat, "--", file).RunInDirBytes(repo.Path)
 | 
			
		||||
		"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize), prettyLogFormat, "--", file).RunInDirBytes(repo.Path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,6 @@ package setting
 | 
			
		|||
import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -19,8 +18,8 @@ var (
 | 
			
		|||
		MaxGitDiffLines           int
 | 
			
		||||
		MaxGitDiffLineCharacters  int
 | 
			
		||||
		MaxGitDiffFiles           int
 | 
			
		||||
		CommitsRangeSize          int
 | 
			
		||||
		BranchesRangeSize         int
 | 
			
		||||
		CommitsRangeSize          int // CommitsRangeSize the default commits range size
 | 
			
		||||
		BranchesRangeSize         int // BranchesRangeSize the default branches range size
 | 
			
		||||
		VerbosePush               bool
 | 
			
		||||
		VerbosePushDelay          time.Duration
 | 
			
		||||
		GCArgs                    []string `ini:"GC_ARGS" delim:" "`
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +53,7 @@ var (
 | 
			
		|||
			Pull    int
 | 
			
		||||
			GC      int `ini:"GC"`
 | 
			
		||||
		}{
 | 
			
		||||
			Default: int(git.DefaultCommandExecutionTimeout / time.Second),
 | 
			
		||||
			Default: 360,
 | 
			
		||||
			Migrate: 600,
 | 
			
		||||
			Mirror:  300,
 | 
			
		||||
			Clone:   300,
 | 
			
		||||
| 
						 | 
				
			
			@ -68,35 +67,4 @@ func newGit() {
 | 
			
		|||
	if err := Cfg.Section("git").MapTo(&Git); err != nil {
 | 
			
		||||
		log.Fatal("Failed to map Git settings: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := git.SetExecutablePath(Git.Path); err != nil {
 | 
			
		||||
		log.Fatal("Failed to initialize Git settings: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	git.DefaultCommandExecutionTimeout = time.Duration(Git.Timeout.Default) * time.Second
 | 
			
		||||
 | 
			
		||||
	version, err := git.LocalVersion()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal("Error retrieving git version: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// force cleanup args
 | 
			
		||||
	git.GlobalCommandArgs = []string{}
 | 
			
		||||
 | 
			
		||||
	if git.CheckGitVersionAtLeast("2.9") == nil {
 | 
			
		||||
		// Explicitly disable credential helper, otherwise Git credentials might leak
 | 
			
		||||
		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var format = "Git Version: %s"
 | 
			
		||||
	var args = []interface{}{version.Original()}
 | 
			
		||||
	// Since git wire protocol has been released from git v2.18
 | 
			
		||||
	if Git.EnableAutoGitWireProtocol && git.CheckGitVersionAtLeast("2.18") == nil {
 | 
			
		||||
		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "protocol.version=2")
 | 
			
		||||
		format += ", Wire Protocol %s Enabled"
 | 
			
		||||
		args = append(args, "Version 2") // for focus color
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	git.CommitsRangeSize = Git.CommitsRangeSize
 | 
			
		||||
	git.BranchesRangeSize = Git.BranchesRangeSize
 | 
			
		||||
 | 
			
		||||
	log.Info(format, args...)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@ import (
 | 
			
		|||
	"time"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/modules/generate"
 | 
			
		||||
	"code.gitea.io/gitea/modules/git"
 | 
			
		||||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
 | 
			
		||||
	ini "gopkg.in/ini.v1"
 | 
			
		||||
| 
						 | 
				
			
			@ -67,24 +66,3 @@ func newLFSService() {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CheckLFSVersion will check lfs version, if not satisfied, then disable it.
 | 
			
		||||
func CheckLFSVersion() {
 | 
			
		||||
	if LFS.StartServer {
 | 
			
		||||
		//Disable LFS client hooks if installed for the current OS user
 | 
			
		||||
		//Needs at least git v2.1.2
 | 
			
		||||
 | 
			
		||||
		err := git.LoadGitVersion()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal("Error retrieving git version: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if git.CheckGitVersionAtLeast("2.1.2") != nil {
 | 
			
		||||
			LFS.StartServer = false
 | 
			
		||||
			log.Error("LFS server support needs at least Git v2.1.2")
 | 
			
		||||
		} else {
 | 
			
		||||
			git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "filter.lfs.required=",
 | 
			
		||||
				"-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -143,8 +143,8 @@ func GetAllCommits(ctx *context.APIContext) {
 | 
			
		|||
		listOptions.Page = 1
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if listOptions.PageSize > git.CommitsRangeSize {
 | 
			
		||||
		listOptions.PageSize = git.CommitsRangeSize
 | 
			
		||||
	if listOptions.PageSize > setting.Git.CommitsRangeSize {
 | 
			
		||||
		listOptions.PageSize = setting.Git.CommitsRangeSize
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sha := ctx.Query("sha")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,9 @@ func GlobalInit(ctx context.Context) {
 | 
			
		|||
	if err := git.Init(ctx); err != nil {
 | 
			
		||||
		log.Fatal("Git module init failed: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	setting.CheckLFSVersion()
 | 
			
		||||
	log.Info(git.VersionInfo())
 | 
			
		||||
 | 
			
		||||
	git.CheckLFSVersion()
 | 
			
		||||
	log.Trace("AppPath: %s", setting.AppPath)
 | 
			
		||||
	log.Trace("AppWorkPath: %s", setting.AppWorkPath)
 | 
			
		||||
	log.Trace("Custom path: %s", setting.CustomPath)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/repofiles"
 | 
			
		||||
	repo_module "code.gitea.io/gitea/modules/repository"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
	"code.gitea.io/gitea/modules/web"
 | 
			
		||||
	"code.gitea.io/gitea/routers/utils"
 | 
			
		||||
| 
						 | 
				
			
			@ -62,8 +63,8 @@ func Branches(ctx *context.Context) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	limit := ctx.QueryInt("limit")
 | 
			
		||||
	if limit <= 0 || limit > git.BranchesRangeSize {
 | 
			
		||||
		limit = git.BranchesRangeSize
 | 
			
		||||
	if limit <= 0 || limit > setting.Git.BranchesRangeSize {
 | 
			
		||||
		limit = setting.Git.BranchesRangeSize
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	skip := (page - 1) * limit
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +74,7 @@ func Branches(ctx *context.Context) {
 | 
			
		|||
		return
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Data["Branches"] = branches
 | 
			
		||||
	pager := context.NewPagination(int(branchesCount), git.BranchesRangeSize, page, 5)
 | 
			
		||||
	pager := context.NewPagination(int(branchesCount), setting.Git.BranchesRangeSize, page, 5)
 | 
			
		||||
	pager.SetDefaultParams(ctx)
 | 
			
		||||
	ctx.Data["Page"] = pager
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ func Commits(ctx *context.Context) {
 | 
			
		|||
 | 
			
		||||
	pageSize := ctx.QueryInt("limit")
 | 
			
		||||
	if pageSize <= 0 {
 | 
			
		||||
		pageSize = git.CommitsRangeSize
 | 
			
		||||
		pageSize = setting.Git.CommitsRangeSize
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Both `git log branchName` and `git log commitId` work.
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ func Commits(ctx *context.Context) {
 | 
			
		|||
	ctx.Data["CommitCount"] = commitsCount
 | 
			
		||||
	ctx.Data["Branch"] = ctx.Repo.BranchName
 | 
			
		||||
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager.SetDefaultParams(ctx)
 | 
			
		||||
	ctx.Data["Page"] = pager
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ func FileHistory(ctx *context.Context) {
 | 
			
		|||
	ctx.Data["CommitCount"] = commitsCount
 | 
			
		||||
	ctx.Data["Branch"] = branchName
 | 
			
		||||
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager.SetDefaultParams(ctx)
 | 
			
		||||
	ctx.Data["Page"] = pager
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/modules/log"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup"
 | 
			
		||||
	"code.gitea.io/gitea/modules/markup/markdown"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
	"code.gitea.io/gitea/modules/web"
 | 
			
		||||
| 
						 | 
				
			
			@ -316,7 +317,7 @@ func renderRevisionPage(ctx *context.Context) (*git.Repository, *git.TreeEntry)
 | 
			
		|||
 | 
			
		||||
	ctx.Data["Commits"] = commitsHistory
 | 
			
		||||
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5)
 | 
			
		||||
	pager.SetDefaultParams(ctx)
 | 
			
		||||
	ctx.Data["Page"] = pager
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue