mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-25 11:16:11 +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> |
||
---|---|---|
.. | ||
.travis.yml | ||
go.mod | ||
go.sum | ||
LICENSE.txt | ||
nio.go | ||
README.md | ||
sync.go |
nio
Usage
The Buffer interface:
type Buffer interface {
Len() int64
Cap() int64
io.ReadWriter
}
nio's Copy method concurrently copies from an io.Reader to a supplied nio.Buffer, then from the nio.Buffer to an io.Writer. This way, blocking writes don't slow the io.Reader.
import (
"github.com/djherbis/buffer"
"github.com/djherbis/nio"
)
buf := buffer.New(32*1024) // 32KB In memory Buffer
nio.Copy(w, r, buf) // Reads and Writes concurrently, buffering using buf.
nio's Pipe method is a buffered version of io.Pipe The writer return once its data has been written to the Buffer. The reader returns with data off the Buffer.
import (
"gopkg.in/djherbis/buffer.v1"
"gopkg.in/djherbis/nio.v2"
)
buf := buffer.New(32*1024) // 32KB In memory Buffer
r, w := nio.Pipe(buf)
Installation
go get gopkg.in/djherbis/nio.v2
For some pre-built buffers grab:
go get gopkg.in/djherbis/buffer.v1
Mentions
GopherCon 2017: Peter Bourgon - Evolutionary Optimization with Go