forked from forgejo/forgejo
Use git log name-status in get last commit (#16059)
* 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>
This commit is contained in:
parent
8fa3bbc424
commit
23358bc55d
40 changed files with 2540 additions and 297 deletions
41
vendor/github.com/djherbis/buffer/spill.go
generated
vendored
Normal file
41
vendor/github.com/djherbis/buffer/spill.go
generated
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
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{})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue