| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement the same SHA1 collision resistent algorithm used by both the
Git CLI and libgit2.
Only commits with input that match the unavoidable bit conditions will be further
processed, which will result in different hashes.
Which is the same behaviour experienced in the Git CLI and Libgit2.
Users can override the hash algorithm used with:
hash.RegisterHash(crypto.SHA1, sha1.New)
xref links:
https://github.com/libgit2/libgit2/pull/4136/commits/2dfd1294f7a694bfa9e864a9489ae3cb318a5ed0
https://github.com/git/git/commit/28dc98e343ca4eb370a29ceec4c19beac9b5c01e
Signed-off-by: Paulo Gomes <pjbgf@linux.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Expands on the optimisations from https://github.com/fluxcd/go-git/pull/5
and ensures that zlib reader does not need to recreate a deflate
dictionary at every use.
The use of sync pools was consolidated into a new sync utils package.
name old time/op new time/op delta
Parser-16 7.51ms ± 3% 7.71ms ± 6% ~ (p=0.222 n=5+5)
name old alloc/op new alloc/op delta
Parser-16 4.65MB ± 3% 1.90MB ± 3% -59.06% (p=0.008 n=5+5)
name old allocs/op new allocs/op delta
Parser-16 3.48k ± 0% 3.32k ± 0% -4.57% (p=0.016 n=5+4)
Signed-off-by: Paulo Gomes <pjbgf@linux.com>
|
|
|
|
| |
Signed-off-by: Paulo Gomes <pjbgf@linux.com>
|
| |
|
| |
|
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
[staticcheck](https://staticcheck.io/) reported a number of unused
fields, functions, types, and variables across the code.
Where possible, use them (assert unchecked errors in tests, for example)
and otherwise remove them.
|
| |/ |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
completely (#330)
This PR adds code to prevent large objects from being read into memory
from packfiles or the filesystem.
Objects greater than 1Mb are now no longer directly stored in the cache
or read completely into memory.
This PR differs and improves the previous broken #323 by fixing several
bugs in the reader and transparently wrapping ReaderAt as a Reader.
Signed-off-by: Andrew Thornton <art27@cantab.net>
|
|
|
|
|
| |
into memory completely (#303)" (#329)
This reverts commit 720c192831a890d0a36b4c6720b60411fa4a0159.
|
|
|
|
|
|
|
|
|
|
|
| |
completely (#303)
This PR adds code to prevent large objects from being read into memory from packfiles or the filesystem.
Objects greater than 1Mb are now no longer directly stored in the cache
or read completely into memory.
Signed-off-by: Andrew Thornton <art27@cantab.net>
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Nao YONASHIRO <owan.orisano@gmail.com>
|
|
|
|
| |
Signed-off-by: Nao YONASHIRO <owan.orisano@gmail.com>
|
|
|
|
| |
Signed-off-by: Nao YONASHIRO <owan.orisano@gmail.com>
|
|
|
|
| |
Signed-off-by: Nao YONASHIRO <owan.orisano@gmail.com>
|
|
|
|
|
|
|
|
|
|
| |
When we assign a value to err, make sure to also check for it being nil
afterwards. If those were intentionally unchecked, we should remove the
assignment in the first place. Those checks certainly never harm, but please
review thoroughly and let me know.
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
(cherry picked from commit 19d6f42a4d814a50bd262fbb69a9b670db9756a2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two problems are fixed:
- Buffers are not returned to the pool in the case of errors.
- Per https://golang.org/pkg/bytes/#Buffer.Bytes, the slice returned
from bytes.Buffer.Bytes() is only valid until the next modification
of the buffer, so it must be copied before the buffer is returned to the pool.
Running `go test -race` detected the following:
```
==================
WARNING: DATA RACE
Write at 0x00c000224020 by goroutine 15:
bytes.(*Buffer).WriteByte()
/usr/local/Cellar/go/1.11.5/libexec/src/bytes/buffer.go:271 +0xc8
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.diffDelta()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go:95 +0x505
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.getDelta()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/diff_delta.go:60 +0x4ae
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).tryToDeltify()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:309 +0x398
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).walk()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:262 +0x33b
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack.func1()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:70 +0x6a
Previous read at 0x00c000224020 by goroutine 8:
runtime.slicecopy()
/usr/local/Cellar/go/1.11.5/libexec/src/runtime/slice.go:221 +0x0
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.getDelta()
vendor/gopkg.in/src-d/go-git.v4/plumbing/memory.go:53 +0x5e2
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).tryToDeltify()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:309 +0x398
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).walk()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:262 +0x33b
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack.func1()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:70 +0x6a
Goroutine 15 (running) created at:
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:69 +0x761
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*Encoder).Encode()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go:52 +0xb1
vendor/gopkg.in/src-d/go-git%2ev4.pushHashes.func1()
vendor/gopkg.in/src-d/go-git.v4/remote.go:1026 +0x102
Goroutine 8 (finished) created at:
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*deltaSelector).ObjectsToPack()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/delta_selector.go:69 +0x761
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile.(*Encoder).Encode()
vendor/gopkg.in/src-d/go-git.v4/plumbing/format/packfile/encoder.go:52 +0xb1
vendor/gopkg.in/src-d/go-git%2ev4.pushHashes.func1()
vendor/gopkg.in/src-d/go-git.v4/remote.go:1026 +0x102
==================
```
Signed-off-by: Ed Bardsley <ewb@uber.com>
|
|\
| |
| | |
plumbing: packfile, apply small object reading optimization also for delta objects
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| |
| |
| | |
FSObject
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| |
| |
| | |
used by getNextObject in the subsequent statement
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <filip.navara@gmail.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <filip.navara@gmail.com>
|
| |
| |
| |
| |
| |
| | |
plumbing.AnyObject
Signed-off-by: Filip Navara <filip.navara@gmail.com>
|
| |
| |
| |
| |
| |
| | |
new one
Signed-off-by: Filip Navara <filip.navara@gmail.com>
|
| |
| |
| |
| | |
Signed-off-by: Filip Navara <navara@emclient.com>
|
| |
| |
| |
| |
| |
| | |
objects
Signed-off-by: Filip Navara <navara@emclient.com>
|
|\ \
| | |
| | | |
plumbing: packfile/scanner, readability/performance improvements, zlib pooling
|
| |/
| |
| |
| | |
Signed-off-by: Arran Walker <arran.walker@fiveturns.org>
|
|/
|
|
|
|
|
|
| |
The MaxOpenDescriptors option provides a middle ground solution between keeping
all packfiles open (as offered by the KeepDescriptors option) and keeping none
open.
Signed-off-by: Arran Walker <arran.walker@fiveturns.org>
|
|
|
|
| |
Signed-off-by: Jeremy Stribling <strib@alum.mit.edu>
|
|
|
|
| |
Signed-off-by: Javi Fontan <jfontan@gmail.com>
|
|
|
|
|
|
|
|
| |
Previously the error message when the connection was closed while
fetching was "object not found" and was misleading. Now when the
packfile size is 0 the error "unable to fetch packfile" is returned.
Signed-off-by: Javi Fontan <jfontan@gmail.com>
|
|
|
|
|
|
| |
commit histories (#963)
Signed-off-by: Filip Navara <navara@emclient.com>
|
|\
| |
| | |
plumbing/format/packfile: Fix broken "thin" packfile support. Fixes #991
|
| |
| |
| |
| | |
Signed-off-by: Javier Peletier <jm@epiclabs.io>
|
| |
| |
| |
| | |
Signed-off-by: Javier Peletier <jm@epiclabs.io>
|