Add gitoutput package, rework all git hashing (#1239)
Migrate all calls out to `git` to a streaming reading strategy.
Along the way:
- Addresses the `git` path handling by using `-z`.
- 15% performance improvement on `large-monorepo`.
- Added path types.
History grabbed with:
`git log --pretty=email --patch-with-stat --reverse --full-index --binary -- src/pkg/csv/reader.go src/pkg/csv/reader_test.go src/pkg/encoding/csv/reader.go src/pkg/encoding/csv/reader_test.go src/encoding/csv/reader.go src/encoding/csv/reader_test.go`
Co-authored-by: Robert Griesemer <8528975+griesemer@users.noreply.github.com>
Co-authored-by: Russ Cox <104030+rsc@users.noreply.github.com>
Co-authored-by: Rob Pike <4324516+robpike@users.noreply.github.com>
Co-authored-by: Brad Fitzpatrick <2621+bradfitz@users.noreply.github.com>
Co-authored-by: Pieter Droogendijk <821733+PieterD@users.noreply.github.com>
Co-authored-by: Shawn Smith <80111+shawnps@users.noreply.github.com>
Co-authored-by: Justin Nuß <6443781+nussjustin@users.noreply.github.com>
Co-authored-by: Ainar Garipov <4964986+ainar-g@users.noreply.github.com>
Co-authored-by: Damien Neil <52544+neild@users.noreply.github.com>
Co-authored-by: Katrina Owen <276834+kytrinyx@users.noreply.github.com>
Co-authored-by: Eric Lagergren <5894247+ericlagergren@users.noreply.github.com>
Co-authored-by: Ian Lance Taylor <3194333+ianlancetaylor@users.noreply.github.com>
Co-authored-by: Jess Frazelle <1445228+jessfraz@users.noreply.github.com>
Co-authored-by: Joe Tsai <6354026+dsnet@users.noreply.github.com>
Co-authored-by: Roger Peppe <66491+rogpeppe@users.noreply.github.com>