mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-12-11 14:01:58 +01:00
23358bc55d
* Improve get last commit using git log --name-status git log --name-status -c provides information about the diff between a commit and its parents. Using this and adjusting the algorithm to use the first change to a path allows for a much faster generation of commit info. There is a subtle change in the results generated but this will cause the results to more closely match those from elsewhere. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: Lauris BH <lauris@nix.lv>
41 lines
687 B
Go
Vendored
41 lines
687 B
Go
Vendored
package buffer
|
|
|
|
import (
|
|
"encoding/gob"
|
|
"io"
|
|
"io/ioutil"
|
|
"math"
|
|
)
|
|
|
|
type spill struct {
|
|
Buffer
|
|
Spiller io.Writer
|
|
}
|
|
|
|
// NewSpill returns a Buffer which writes data to w when there's an error
|
|
// writing to buf. Such as when buf is full, or the disk is full, etc.
|
|
func NewSpill(buf Buffer, w io.Writer) Buffer {
|
|
if w == nil {
|
|
w = ioutil.Discard
|
|
}
|
|
return &spill{
|
|
Buffer: buf,
|
|
Spiller: w,
|
|
}
|
|
}
|
|
|
|
func (buf *spill) Cap() int64 {
|
|
return math.MaxInt64
|
|
}
|
|
|
|
func (buf *spill) Write(p []byte) (n int, err error) {
|
|
if n, err = buf.Buffer.Write(p); err != nil {
|
|
m, err := buf.Spiller.Write(p[n:])
|
|
return m + n, err
|
|
}
|
|
return len(p), nil
|
|
}
|
|
|
|
func init() {
|
|
gob.Register(&spill{})
|
|
}
|