diff options
author | zeripath <art27@cantab.net> | 2021-06-20 23:00:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-21 01:00:46 +0300 |
commit | 23358bc55de67be132e3858a5d40f25dbdd0a769 (patch) | |
tree | 914386734d5dafc0bcf84253c55c67d6590092dc /vendor/github.com/djherbis/buffer/buffer.go | |
parent | 8fa3bbc42450fe34cc0cee3de566b17fa131d1c6 (diff) | |
download | gitea-23358bc55de67be132e3858a5d40f25dbdd0a769.tar.gz gitea-23358bc55de67be132e3858a5d40f25dbdd0a769.zip |
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>
Diffstat (limited to 'vendor/github.com/djherbis/buffer/buffer.go')
-rw-r--r-- | vendor/github.com/djherbis/buffer/buffer.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/github.com/djherbis/buffer/buffer.go b/vendor/github.com/djherbis/buffer/buffer.go new file mode 100644 index 0000000000..34b0811dac --- /dev/null +++ b/vendor/github.com/djherbis/buffer/buffer.go @@ -0,0 +1,48 @@ +// Package buffer implements a series of Buffers which can be composed to implement complicated buffering strategies +package buffer + +import ( + "io" + "os" +) + +// Buffer is used to Write() data which will be Read() later. +type Buffer interface { + Len() int64 // How much data is Buffered in bytes + Cap() int64 // How much data can be Buffered at once in bytes. + io.Reader // Read() will read from the top of the buffer [io.EOF if empty] + io.Writer // Write() will write to the end of the buffer [io.ErrShortWrite if not enough space] + Reset() // Truncates the buffer, Len() == 0. +} + +// BufferAt is a buffer which supports io.ReaderAt and io.WriterAt +type BufferAt interface { + Buffer + io.ReaderAt + io.WriterAt +} + +func len64(p []byte) int64 { + return int64(len(p)) +} + +// Gap returns buf.Cap() - buf.Len() +func Gap(buf Buffer) int64 { + return buf.Cap() - buf.Len() +} + +// Full returns true iff buf.Len() == buf.Cap() +func Full(buf Buffer) bool { + return buf.Len() == buf.Cap() +} + +// Empty returns false iff buf.Len() == 0 +func Empty(buf Buffer) bool { + return buf.Len() == 0 +} + +// NewUnboundedBuffer returns a Buffer which buffers "mem" bytes to memory +// and then creates file's of size "file" to buffer above "mem" bytes. +func NewUnboundedBuffer(mem, file int64) Buffer { + return NewMulti(New(mem), NewPartition(NewFilePool(file, os.TempDir()))) +} |