diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2018-09-06 21:54:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-06 21:54:08 +0200 |
commit | 174f373cf066afc3e3be35576adf3709b0ee278b (patch) | |
tree | 22341a6315f5a0df6f1b0a5821b6c319da28d519 /storage/filesystem/object.go | |
parent | 2f1583896bcc3c182d8165d6aeeb23c771cc5417 (diff) | |
parent | 8176f084d861891d1846a2d46bf669d0d3463ebd (diff) | |
download | go-git-174f373cf066afc3e3be35576adf3709b0ee278b.tar.gz |
Merge pull request #942 from jfontan/improvement/maintain-packfiles-open
storage/dotgit: add KeepDescriptors option
Diffstat (limited to 'storage/filesystem/object.go')
-rw-r--r-- | storage/filesystem/object.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/storage/filesystem/object.go b/storage/filesystem/object.go index 3519385..3545e27 100644 --- a/storage/filesystem/object.go +++ b/storage/filesystem/object.go @@ -74,6 +74,7 @@ func (s *ObjectStorage) loadIdxFile(h plumbing.Hash) (err error) { } defer ioutil.CheckClose(f, &err) + idxf := idxfile.NewMemoryIndex() d := idxfile.NewDecoder(f) if err = d.Decode(idxf); err != nil { @@ -280,7 +281,9 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash, canBeDelta bool) ( return nil, err } - defer ioutil.CheckClose(f, &err) + if !s.options.KeepDescriptors { + defer ioutil.CheckClose(f, &err) + } idx := s.index[pack] if canBeDelta { @@ -423,6 +426,11 @@ func (s *ObjectStorage) buildPackfileIters(t plumbing.ObjectType, seen map[plumb }, nil } +// Close closes all opened files. +func (s *ObjectStorage) Close() error { + return s.dir.Close() +} + type lazyPackfilesIter struct { hashes []plumbing.Hash open func(h plumbing.Hash) (storer.EncodedObjectIter, error) |