forked from gitea/gitea
		
	* Allow git.GetTree to take both commit and tree names, return full paths on entries listed through Tree.ListEntriesRecursive Signed-off-by: Filip Navara <filip.navara@gmail.com> * Fix the SHA returned on Git Tree APIs called with commit hash or symbolic name Signed-off-by: Filip Navara <filip.navara@gmail.com>
This commit is contained in:
		
							parent
							
								
									a27d5d2b23
								
							
						
					
					
						commit
						dbb0c9658c
					
				| @ -35,14 +35,15 @@ func (repo *Repository) GetTree(idStr string) (*Tree, error) { | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	resolvedID := id | ||||
| 	commitObject, err := repo.gogitRepo.CommitObject(plumbing.Hash(id)) | ||||
| 	if err == nil { | ||||
| 		id = SHA1(commitObject.TreeHash) | ||||
| 	} | ||||
| 	treeObject, err := repo.getTree(id) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	treeObject, err := repo.getTree(SHA1(commitObject.TreeHash)) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	treeObject.CommitID = id | ||||
| 	treeObject.ResolvedID = resolvedID | ||||
| 	return treeObject, nil | ||||
| } | ||||
|  | ||||
| @ -15,9 +15,9 @@ import ( | ||||
| 
 | ||||
| // Tree represents a flat directory listing. | ||||
| type Tree struct { | ||||
| 	ID       SHA1 | ||||
| 	CommitID SHA1 | ||||
| 	repo     *Repository | ||||
| 	ID         SHA1 | ||||
| 	ResolvedID SHA1 | ||||
| 	repo       *Repository | ||||
| 
 | ||||
| 	gogitTree *object.Tree | ||||
| 
 | ||||
| @ -106,7 +106,7 @@ func (t *Tree) ListEntriesRecursive() (Entries, error) { | ||||
| 	seen := map[plumbing.Hash]bool{} | ||||
| 	walker := object.NewTreeWalker(t.gogitTree, true, seen) | ||||
| 	for { | ||||
| 		_, entry, err := walker.Next() | ||||
| 		fullName, entry, err := walker.Next() | ||||
| 		if err == io.EOF { | ||||
| 			break | ||||
| 		} | ||||
| @ -121,6 +121,7 @@ func (t *Tree) ListEntriesRecursive() (Entries, error) { | ||||
| 			ID:             entry.Hash, | ||||
| 			gogitTreeEntry: &entry, | ||||
| 			ptree:          t, | ||||
| 			fullName:       fullName, | ||||
| 		} | ||||
| 		entries = append(entries, convertedEntry) | ||||
| 	} | ||||
|  | ||||
| @ -40,12 +40,16 @@ type TreeEntry struct { | ||||
| 	gogitTreeEntry *object.TreeEntry | ||||
| 	ptree          *Tree | ||||
| 
 | ||||
| 	size  int64 | ||||
| 	sized bool | ||||
| 	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 | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -23,7 +23,7 @@ func GetTreeBySHA(repo *models.Repository, sha string, page, perPage int, recurs | ||||
| 		} | ||||
| 	} | ||||
| 	tree := new(api.GitTreeResponse) | ||||
| 	tree.SHA = gitTree.CommitID.String() | ||||
| 	tree.SHA = gitTree.ResolvedID.String() | ||||
| 	tree.URL = repo.APIURL() + "/git/trees/" + tree.SHA | ||||
| 	var entries git.Entries | ||||
| 	if recursive { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Filip Navara
						Filip Navara