mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Use native git variants by default with go-git variants as build tag (#13673)
* Move last commit cache back into modules/git Signed-off-by: Andrew Thornton <art27@cantab.net> * Remove go-git from the interface for last commit cache Signed-off-by: Andrew Thornton <art27@cantab.net> * move cacheref to last_commit_cache Signed-off-by: Andrew Thornton <art27@cantab.net> * Remove go-git from routers/private/hook Signed-off-by: Andrew Thornton <art27@cantab.net> * Move FindLFSFiles to pipeline Signed-off-by: Andrew Thornton <art27@cantab.net> * Make no-go-git variants Signed-off-by: Andrew Thornton <art27@cantab.net> * Submodule RefID Signed-off-by: Andrew Thornton <art27@cantab.net> * fix issue with GetCommitsInfo Signed-off-by: Andrew Thornton <art27@cantab.net> * fix GetLastCommitForPaths Signed-off-by: Andrew Thornton <art27@cantab.net> * Improve efficiency Signed-off-by: Andrew Thornton <art27@cantab.net> * More efficiency Signed-off-by: Andrew Thornton <art27@cantab.net> * even faster Signed-off-by: Andrew Thornton <art27@cantab.net> * Reduce duplication * As per @lunny Signed-off-by: Andrew Thornton <art27@cantab.net> * attempt to fix drone Signed-off-by: Andrew Thornton <art27@cantab.net> * fix test-tags Signed-off-by: Andrew Thornton <art27@cantab.net> * default to use no-go-git variants and add gogit build tag Signed-off-by: Andrew Thornton <art27@cantab.net> * placate lint Signed-off-by: Andrew Thornton <art27@cantab.net> * as per @6543 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		| @@ -9,13 +9,13 @@ import ( | ||||
| 	"bytes" | ||||
| 	"io" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/go-git/go-git/v5/plumbing" | ||||
| ) | ||||
|  | ||||
| // CommitFromReader will generate a Commit from a provided reader | ||||
| // We will need this to interpret commits from cat-file | ||||
| func CommitFromReader(gitRepo *Repository, sha plumbing.Hash, reader io.Reader) (*Commit, error) { | ||||
| // We need this to interpret commits from cat-file or cat-file --batch | ||||
| // | ||||
| // If used as part of a cat-file --batch stream you need to limit the reader to the correct size | ||||
| func CommitFromReader(gitRepo *Repository, sha SHA1, reader io.Reader) (*Commit, error) { | ||||
| 	commit := &Commit{ | ||||
| 		ID: sha, | ||||
| 	} | ||||
| @@ -26,26 +26,20 @@ func CommitFromReader(gitRepo *Repository, sha plumbing.Hash, reader io.Reader) | ||||
| 	message := false | ||||
| 	pgpsig := false | ||||
|  | ||||
| 	scanner := bufio.NewScanner(reader) | ||||
| 	// Split by '\n' but include the '\n' | ||||
| 	scanner.Split(func(data []byte, atEOF bool) (advance int, token []byte, err error) { | ||||
| 		if atEOF && len(data) == 0 { | ||||
| 			return 0, nil, nil | ||||
| 		} | ||||
| 		if i := bytes.IndexByte(data, '\n'); i >= 0 { | ||||
| 			// We have a full newline-terminated line. | ||||
| 			return i + 1, data[0 : i+1], nil | ||||
| 		} | ||||
| 		// If we're at EOF, we have a final, non-terminated line. Return it. | ||||
| 		if atEOF { | ||||
| 			return len(data), data, nil | ||||
| 		} | ||||
| 		// Request more data. | ||||
| 		return 0, nil, nil | ||||
| 	}) | ||||
| 	bufReader, ok := reader.(*bufio.Reader) | ||||
| 	if !ok { | ||||
| 		bufReader = bufio.NewReader(reader) | ||||
| 	} | ||||
|  | ||||
| 	for scanner.Scan() { | ||||
| 		line := scanner.Bytes() | ||||
| readLoop: | ||||
| 	for { | ||||
| 		line, err := bufReader.ReadBytes('\n') | ||||
| 		if err != nil { | ||||
| 			if err == io.EOF { | ||||
| 				break readLoop | ||||
| 			} | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		if pgpsig { | ||||
| 			if len(line) > 0 && line[0] == ' ' { | ||||
| 				_, _ = signatureSB.Write(line[1:]) | ||||
| @@ -72,10 +66,10 @@ func CommitFromReader(gitRepo *Repository, sha plumbing.Hash, reader io.Reader) | ||||
|  | ||||
| 			switch string(split[0]) { | ||||
| 			case "tree": | ||||
| 				commit.Tree = *NewTree(gitRepo, plumbing.NewHash(string(data))) | ||||
| 				commit.Tree = *NewTree(gitRepo, MustIDFromString(string(data))) | ||||
| 				_, _ = payloadSB.Write(line) | ||||
| 			case "parent": | ||||
| 				commit.Parents = append(commit.Parents, plumbing.NewHash(string(data))) | ||||
| 				commit.Parents = append(commit.Parents, MustIDFromString(string(data))) | ||||
| 				_, _ = payloadSB.Write(line) | ||||
| 			case "author": | ||||
| 				commit.Author = &Signature{} | ||||
| @@ -104,5 +98,5 @@ func CommitFromReader(gitRepo *Repository, sha plumbing.Hash, reader io.Reader) | ||||
| 		commit.Signature = nil | ||||
| 	} | ||||
|  | ||||
| 	return commit, scanner.Err() | ||||
| 	return commit, nil | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user