1
1
mirror of https://github.com/go-gitea/gitea synced 2024-12-27 19:14:27 +00:00
gitea/vendor/github.com/djherbis/nio/v3
zeripath 23358bc55d
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>
2021-06-21 01:00:46 +03:00
..
.travis.yml Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
go.mod Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
go.sum Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
LICENSE.txt Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
nio.go Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
README.md Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00
sync.go Use git log name-status in get last commit (#16059) 2021-06-21 01:00:46 +03:00

nio

GoDoc Release Software License Build Status Coverage Status Go Report Card

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