 511f6138d4
			
		
	
	
		511f6138d4
		
			
		
	
	
	
	
		
			
			* 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>
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2015 The Gogs Authors. All rights reserved.
 | |
| // Copyright 2019 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.
 | |
| 
 | |
| // +build gogit
 | |
| 
 | |
| package git
 | |
| 
 | |
| import (
 | |
| 	"github.com/go-git/go-git/v5/plumbing"
 | |
| 	"github.com/go-git/go-git/v5/plumbing/filemode"
 | |
| 	"github.com/go-git/go-git/v5/plumbing/object"
 | |
| )
 | |
| 
 | |
| // TreeEntry the leaf in the git tree
 | |
| type TreeEntry struct {
 | |
| 	ID SHA1
 | |
| 
 | |
| 	gogitTreeEntry *object.TreeEntry
 | |
| 	ptree          *Tree
 | |
| 
 | |
| 	size     int64
 | |
| 	sized    bool
 | |
| 	fullName string
 | |
| }
 | |
| 
 | |
| // Name returns the name of the entry
 | |
| func (te *TreeEntry) Name() string {
 | |
| 	if te.fullName != "" {
 | |
| 		return te.fullName
 | |
| 	}
 | |
| 	return te.gogitTreeEntry.Name
 | |
| }
 | |
| 
 | |
| // Mode returns the mode of the entry
 | |
| func (te *TreeEntry) Mode() EntryMode {
 | |
| 	return EntryMode(te.gogitTreeEntry.Mode)
 | |
| }
 | |
| 
 | |
| // Size returns the size of the entry
 | |
| func (te *TreeEntry) Size() int64 {
 | |
| 	if te.IsDir() {
 | |
| 		return 0
 | |
| 	} else if te.sized {
 | |
| 		return te.size
 | |
| 	}
 | |
| 
 | |
| 	file, err := te.ptree.gogitTree.TreeEntryFile(te.gogitTreeEntry)
 | |
| 	if err != nil {
 | |
| 		return 0
 | |
| 	}
 | |
| 
 | |
| 	te.sized = true
 | |
| 	te.size = file.Size
 | |
| 	return te.size
 | |
| }
 | |
| 
 | |
| // IsSubModule if the entry is a sub module
 | |
| func (te *TreeEntry) IsSubModule() bool {
 | |
| 	return te.gogitTreeEntry.Mode == filemode.Submodule
 | |
| }
 | |
| 
 | |
| // IsDir if the entry is a sub dir
 | |
| func (te *TreeEntry) IsDir() bool {
 | |
| 	return te.gogitTreeEntry.Mode == filemode.Dir
 | |
| }
 | |
| 
 | |
| // IsLink if the entry is a symlink
 | |
| func (te *TreeEntry) IsLink() bool {
 | |
| 	return te.gogitTreeEntry.Mode == filemode.Symlink
 | |
| }
 | |
| 
 | |
| // IsRegular if the entry is a regular file
 | |
| func (te *TreeEntry) IsRegular() bool {
 | |
| 	return te.gogitTreeEntry.Mode == filemode.Regular
 | |
| }
 | |
| 
 | |
| // IsExecutable if the entry is an executable file (not necessarily binary)
 | |
| func (te *TreeEntry) IsExecutable() bool {
 | |
| 	return te.gogitTreeEntry.Mode == filemode.Executable
 | |
| }
 | |
| 
 | |
| // Blob returns the blob object the entry
 | |
| func (te *TreeEntry) Blob() *Blob {
 | |
| 	encodedObj, err := te.ptree.repo.gogitRepo.Storer.EncodedObject(plumbing.AnyObject, te.gogitTreeEntry.Hash)
 | |
| 	if err != nil {
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	return &Blob{
 | |
| 		ID:              te.gogitTreeEntry.Hash,
 | |
| 		gogitEncodedObj: encodedObj,
 | |
| 		name:            te.Name(),
 | |
| 	}
 | |
| }
 |