parent:
7018b5a30bf11213e8a74b4f2dae8ae010c650a0
nmyk <nick@nmyk.io>
2026-02-24T15:36:51-05:00
do not display binary blobs
diff --git a/internal/core/repo.go b/internal/core/repo.go
index a2befcad3b24d4eeed2f859df06c36a28a4f6430..9ebdb909e99d3ee6cfbed6a0287efa70e93d403f 100644
--- a/internal/core/repo.go
+++ b/internal/core/repo.go
@@ -1,14 +1,20 @@
package core
import (
+ "bytes"
"errors"
+ "fmt"
+ "io"
"os"
"path"
"strings"
+ "github.com/dustin/go-humanize"
+
"github.com/go-git/go-git/v6"
"github.com/go-git/go-git/v6/plumbing"
"github.com/go-git/go-git/v6/plumbing/object"
+ "github.com/go-git/go-git/v6/utils/binary"
)
const dotGit = ".git"
@@ -57,15 +63,26 @@ file, err := repo.BlobObject(entry.Hash)
if err != nil {
return "", err
}
- reader, err := file.Reader()
+ r, err := file.Reader()
+ if err != nil {
+ return "", err
+ }
+ data, err := io.ReadAll(r)
if err != nil {
return "", err
}
- defer reader.Close()
+ defer r.Close()
+ binReader := bytes.NewReader(data)
- content := make([]byte, file.Size)
- reader.Read(content)
- return string(content), nil
+ isBin, err := binary.IsBinary(binReader)
+ if err != nil {
+ return "", err
+ }
+ if isBin {
+ return fmt.Sprintf("(%s binary file)", humanize.Bytes(uint64(file.Size))), nil
+ } else {
+ return string(data), nil
+ }
}
type Commit struct {