* 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>
		
			
				
	
	
		
			42 lines
		
	
	
		
			687 B
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			42 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{})
 | |
| }
 |