fixes if git cat-file has error

This commit is contained in:
2025-05-02 22:46:31 +02:00
parent aac475ad16
commit 327cb4ceaf
2 changed files with 68 additions and 16 deletions

View File

@@ -24,7 +24,6 @@ import (
"errors"
"fmt"
"io"
"log"
"os"
"os/exec"
"path"
@@ -554,7 +553,6 @@ func parseGitTree(data <-chan byte) (GitTree, error) {
parsedLen := 0
for parsedLen < hdr.size {
entry, err := parseTreeEntry(data, len(hdr.hash)/2)
log.Println(entry, parsedLen, hdr.size)
if err != nil {
return GitTree{}, nil
}
@@ -650,14 +648,18 @@ func (e *GitHandlerImpl) GitCatFile(cwd, commitId, filename string) (data []byte
data_out.Write([]byte(commitId))
data_out.ch <- '\x00'
c, err := parseGitCommit(data_in.ch)
var c GitCommit
c, err = parseGitCommit(data_in.ch)
if err != nil {
LogError("Error parsing git commit:", err)
return
}
data_out.Write([]byte(c.Tree))
data_out.ch <- '\x00'
tree, err := parseGitTree(data_in.ch)
var tree GitTree
tree, err = parseGitTree(data_in.ch)
if err != nil {
LogError("Error parsing git tree:", err)
@@ -691,8 +693,11 @@ func (e *GitHandlerImpl) GitCatFile(cwd, commitId, filename string) (data []byte
return len(data), nil
})
LogDebug("command run:", cmd.Args)
err = cmd.Run()
if e := cmd.Run(); e != nil {
close(data_in.ch)
close(data_out.ch)
return nil, e
}
done.Lock()
return
}