mirror of
https://github.com/go-gitea/gitea.git
synced 2025-12-29 21:01:33 +00:00
58 lines
1.9 KiB
Go
58 lines
1.9 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import (
|
|
"bufio"
|
|
"errors"
|
|
|
|
"code.gitea.io/gitea/modules/git/catfile"
|
|
)
|
|
|
|
// ReadBatchLine reads the header line from cat-file --batch while preserving the traditional return signature.
|
|
func ReadBatchLine(rd *bufio.Reader) (sha []byte, typ string, size int64, err error) {
|
|
sha, typ, size, err = catfile.ReadBatchLine(rd)
|
|
return sha, typ, size, convertCatfileError(err, sha)
|
|
}
|
|
|
|
// ReadTagObjectID reads a tag object ID hash from a cat-file --batch stream, throwing away the rest of the stream.
|
|
func ReadTagObjectID(rd *bufio.Reader, size int64) (string, error) {
|
|
return catfile.ReadTagObjectID(rd, size)
|
|
}
|
|
|
|
// ReadTreeID reads a tree ID from a cat-file --batch stream, throwing away the rest of the stream.
|
|
func ReadTreeID(rd *bufio.Reader, size int64) (string, error) {
|
|
return catfile.ReadTreeID(rd, size)
|
|
}
|
|
|
|
// BinToHex converts a binary hash into a hex encoded one.
|
|
func BinToHex(objectFormat ObjectFormat, sha, out []byte) []byte {
|
|
return catfile.BinToHex(objectFormat, sha, out)
|
|
}
|
|
|
|
// ParseCatFileTreeLine reads an entry from a tree in a cat-file --batch stream.
|
|
func ParseCatFileTreeLine(objectFormat ObjectFormat, rd *bufio.Reader, modeBuf, fnameBuf, shaBuf []byte) (mode, fname, sha []byte, n int, err error) {
|
|
mode, fname, sha, n, err = catfile.ParseCatFileTreeLine(objectFormat, rd, modeBuf, fnameBuf, shaBuf)
|
|
return mode, fname, sha, n, convertCatfileError(err, nil)
|
|
}
|
|
|
|
// DiscardFull discards the requested number of bytes from the buffered reader.
|
|
func DiscardFull(rd *bufio.Reader, discard int64) error {
|
|
return catfile.DiscardFull(rd, discard)
|
|
}
|
|
|
|
func convertCatfileError(err error, defaultID []byte) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
var notFound catfile.ErrObjectNotFound
|
|
if errors.As(err, ¬Found) {
|
|
if notFound.ID == "" && len(defaultID) > 0 {
|
|
notFound.ID = string(defaultID)
|
|
}
|
|
return ErrNotExist{ID: notFound.ID}
|
|
}
|
|
return err
|
|
}
|