mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	| @@ -10,19 +10,24 @@ import ( | ||||
| 	"context" | ||||
| 	"io/ioutil" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
|  | ||||
| 	"github.com/go-git/go-git/v5/plumbing/object" | ||||
| ) | ||||
|  | ||||
| // GetNote retrieves the git-notes data for a given commit. | ||||
| func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error { | ||||
| 	log.Trace("Searching for git note corresponding to the commit %q in the repository %q", commitID, repo.Path) | ||||
| 	notes, err := repo.GetCommit(NotesRef) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to get commit from ref %q. Error: %v", NotesRef, err) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	remainingCommitID := commitID | ||||
| 	path := "" | ||||
| 	currentTree := notes.Tree.gogitTree | ||||
| 	log.Trace("Found tree with ID %q while searching for git note corresponding to the commit %q", currentTree.Entries[0].Name, commitID) | ||||
| 	var file *object.File | ||||
| 	for len(remainingCommitID) > 2 { | ||||
| 		file, err = currentTree.File(remainingCommitID) | ||||
| @@ -39,6 +44,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
| 			if err == object.ErrDirectoryNotFound { | ||||
| 				return ErrNotExist{ID: remainingCommitID, RelPath: path} | ||||
| 			} | ||||
| 			log.Error("Unable to find git note corresponding to the commit %q. Error: %v", commitID, err) | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
| @@ -46,12 +52,14 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
| 	blob := file.Blob | ||||
| 	dataRc, err := blob.Reader() | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	defer dataRc.Close() | ||||
| 	d, err := ioutil.ReadAll(dataRc) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	note.Message = d | ||||
| @@ -68,6 +76,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
|  | ||||
| 	lastCommits, err := GetLastCommitForPaths(ctx, commitNode, "", []string{path}) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to get the commit for the path %q. Error: %v", path, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	note.Commit = convertCommit(lastCommits[path]) | ||||
|   | ||||
| @@ -10,20 +10,26 @@ import ( | ||||
| 	"context" | ||||
| 	"io/ioutil" | ||||
| 	"strings" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| ) | ||||
|  | ||||
| // GetNote retrieves the git-notes data for a given commit. | ||||
| func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) error { | ||||
| 	log.Trace("Searching for git note corresponding to the commit %q in the repository %q", commitID, repo.Path) | ||||
| 	notes, err := repo.GetCommit(NotesRef) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to get commit from ref %q. Error: %v", NotesRef, err) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	path := "" | ||||
|  | ||||
| 	tree := ¬es.Tree | ||||
| 	log.Trace("Found tree with ID %q while searching for git note corresponding to the commit %q", tree.ID, commitID) | ||||
|  | ||||
| 	var entry *TreeEntry | ||||
| 	originalCommitID := commitID | ||||
| 	for len(commitID) > 2 { | ||||
| 		entry, err = tree.GetTreeEntryByPath(commitID) | ||||
| 		if err == nil { | ||||
| @@ -36,12 +42,15 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
| 			commitID = commitID[2:] | ||||
| 		} | ||||
| 		if err != nil { | ||||
| 			log.Error("Unable to find git note corresponding to the commit %q. Error: %v", originalCommitID, err) | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	dataRc, err := entry.Blob().DataAsync() | ||||
| 	blob := entry.Blob() | ||||
| 	dataRc, err := blob.DataAsync() | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	closed := false | ||||
| @@ -52,6 +61,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
| 	}() | ||||
| 	d, err := ioutil.ReadAll(dataRc) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to read blob with ID %q. Error: %v", blob.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	_ = dataRc.Close() | ||||
| @@ -66,6 +76,7 @@ func GetNote(ctx context.Context, repo *Repository, commitID string, note *Note) | ||||
|  | ||||
| 	lastCommits, err := GetLastCommitForPaths(ctx, notes, treePath, []string{path}) | ||||
| 	if err != nil { | ||||
| 		log.Error("Unable to get the commit for the path %q. Error: %v", treePath, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	note.Commit = lastCommits[path] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user